1.⽗传⼦: 在⼦组件的标签上定义属性 ⼦组件通过props来进⾏接受,可以通过数组的⽅式进⾏接受,也可以通过对象的⽅式来接收。对象形式的话,里面有四个参数,分别是:type限制类型,required 是否必传,使用default默认值,validator自定义校验。如果⽗组件没有传递属性,⼦组件可以default来设置默认值,如果父组件中中传的数据是对象或数组的话,子组件对象形式的default 要写成工厂函数形式。
2.⼦传⽗:⼦组件通过this.$emit("⾃定义的事件",要传给⽗组件的数据), ⽗组件通过⼦组件的标签监听⾃定义的时间,通过⽅法来接收传递的数据。
3.⾮⽗⼦组件通信 :
通过中央事件总线,我们也称之为eventBus,
在main.js中vue 的原型上挂载一个中央事件总线,Vue.prototype.$bus = new Vue(),
在兄弟组件中,第一个组件传数据用--》 this.$bus.$emit('aaa',this.num);
另一个兄弟组件获取传递的数据用 this.$bus.$on('aaa',res=>{
console.log(res,'res')
})
事件监听,移除事件监听用 this.$bus.$off('aaa')。
我们需要创建⼀个空的js⽂件,在这个⽂件⾥⾯创建空的vue实例,然后导出这个空的vue实例,通过实例对象调⽤.on⽅法进⾏接
收,通过emit⽅法来进⾏发送,以上就是⾮⽗⼦组件通信的⽅式。
4.获取父组件的实例:$parent
5.获取父组件中子组件的实例:$children,可用 this.$children[0]
实例指的是this;
6.vuex:
7.本地存储:
8.v-model(是父传子子传父的合体):
使用的是v-model:value,v-on:input的事件,可以父传子,可以获取传过来的数据,也可以像父组件传递数据。
(V3中 value改为 modelvalue, input改为update)
vue3的
9.provide/inject:provide导入,inject导出,只可以当前组件的子组件以及父组件中后代组件使用。
10、 ref和refs通讯比如:定义一个标签,在标签上用ref定义一个属性名,获取标签用 this.$refs.属性名/this.$refs[属性名]
11、.sync 修饰符