Vue组件传值

229 阅读1分钟

1、父传子、子传父、bus传值

父传子:props来接收,props可以说对象,也可以是数组,推荐使用对象,可设置默认数据

props:{
    title:{
        type: 类型,
        default: '默认数据',
        required: true  必须传值,必填的,不然会报错
    }
}

当结束props数据时候,最好是在data或者computed这两个里面接收,可以对数据进行处理

要想通过props改变父组件传递过来的值

通过添加sync属性配合$emit实现父子通讯的双向数据流:
父组件:
<Fu :title.sync="title" />

 子组件:
 this.$emit('update:title', 'wzl123')

父传子,通过emit来派发事件,parent:子组件直接获取父组件实例,$children:父组件直接调用子组件,ref:通过ref给dom组件实例

this.$emit('要派发的自定义事件名',要传递的值)
<ZI ref="dialog" />

JS中通过this.$refs.名子访问

例如:this.$refs.dialog

如何在父组件中直接调用子组件的方法?
this.$Children
home.vue父组件
Dialog.vue子组件
如何在子组件中直接调用父组件的方法? 
this.$parent.方法()

兄弟通讯 Bus、vuex、localstorage

导出一个空的vue实例
import Vue from 'vue'
const Bus = new Vue();
export default Bus;
在main.js中注入bus
//引入bus
import Bus from './utils/bus'
// 挂载到Vue原型上
Vue.prototype.$bus = Bus;