1、组件传值(通信)的方式?
1、父传子
方法一、
父传:
<ChildVue :message="msg" ></ChildVue>
子接收:
props: {
message: {
type: String,
required: true
}
}
无法修改
方法二、
通过this.$parent.xxx可以直接获取还可以修改父组件的值
2、子传父
方法一、
子用自定义事件进行传递, this.$emit('change', '子组件向父组件发送事件')
父组件的接收: <ChildVue @change="bth"></ChildVue>(
methods:{
bth(val){
this.childrenVal = val
}
}
)
方法二、
this.$chlidren.×××可以直接获取子组件的值.还可以修改
3、祖孙之间的传递
方法一、
跟父传子一样,但是需要先传给父组件,再一级一级向下传 爷爷=》父亲=》子
方法二、
this.$parent.$parent一层一层获取
方法三、provide/inject(只能用于祖孙之间的传递)
祖组件:
provide(){
return {
msg:'哈哈'
}
}
子组件:
inject:['msg']
4、兄弟组件之间的传递
用一个bus来传递;创建一个bus.js的文件来接收和传递。
bus.js
import Vue from 'vue' export default new Vue()
使用就是跟父子组件用自定义组件this.$emit('change',()=>{})和this.$on('change',()=>{})一样就是将bus转换为bus就可以了。
还有一种传递使用vuex来传递(这里不细讲)
2、父组件如何直接修改子组件的值?
this.$chlidren.×××可以直接修改子组件的值.
3、子组件如何直接修改父组件的值
通过this.$parent.xxx可以直接获取并修改父组件的值
4、如何找到父组件与根组件?
通过this.$parent找到父组件。
通过this.$root直接找到根组件。
需要注意的是根组件的父组件是它本身
5、slot插槽?
首先slot插槽分为匿名(默认)插槽、具名插槽、作用域插槽三大类
匿名插槽:
默认插槽是最基本的插槽形式,当父组件在使用子组件标签时,在标签内部写入的内容,会被渲染到子组件中
<slot>
标签所在的位置具名插槽:
具名插槽允许在子组件中定义多个插槽,并通过
name
属性为每个插槽指定名称,这样父组件就可以明确地将内容插入到对应的插槽中。作用域插槽:
作用域插槽允许子组件向父组件传递数据,使父组件在使用插槽内容时可以基于子组件提供的数据进行渲染。