深度剖析Vue中父给子、子给父、兄弟之间传值!
程序员文章站
2023-11-04 12:32:16
本片文章将为您详细讲解在Vue中,父给子传值、子给父传值以及兄弟之间传值方式! 父传子;父组件 父传子;子组件 需要注意的是,父组件传值给子组件,如果子组件不需要修改父组件的参数,可以使用这种方式!如果子组件要修改父组件中的参数,父组件必须用引用类型的参数传给子组件! 子传父;父组件 子传父;子组件 ......
本片文章将为您详细讲解在vue中,父给子传值、子给父传值以及兄弟之间传值方式!
父传子;父组件
// template里面
<aa :info="name"/>
// script里面
import aa from './aa.vue'
components:{
aa
},
data(){
return{
name : '小明'
}
}
父传子;子组件
// template里面 {{info}} // script里面 export default { props :['info'] }
需要注意的是,父组件传值给子组件,如果子组件不需要修改父组件的参数,可以使用这种方式!如果子组件要修改父组件中的参数,父组件必须用引用类型的参数传给子组件!
子传父;父组件
// template里面 @info是父子之间通讯 <app @info="change" /> // script里面 import app from './views/app.vue' methods:{ // 接受子组件传过来的参数; change(z){ console.log(z) } }
子传父;子组件
// temolate里面 <el-button @click="change() ;aa()">我是子组件</el-button> // script里面 methods:{ change(){ this.$emit('info','我是儿子,传值给父亲') } }
兄弟之间传值使用的是$bus的传值方式,具体配置如下
同目录下创建bus.js
// bus.js中只需要写这么多就ok export default { install(vue){ vue.prototype.$bus = new vue({}); } };
main.js中需要引入bus.js文件!
// 在main.js中引入创建好的bus.js文件 import bus from './bus.js'; vue.use(bus); new vue({ el: '#app', render(h){ return h(app); } });
配置完成开始书写传值代码;
兄弟传值;传值方
<button @click=" $bus.$emit('info','哈哈')">点击兄弟传值</button>
兄弟传值;接受方
// 直接使用生命周期来接受,可以赋值给其他参数! created(){ this.$bus.$on('info',data =>{ console.log(data) }) }
如果喜欢我的文章,请关注下微信公众“前端伪大叔”!我将不定期为您发布各种前端重要知识点!谢谢