1.通过props处理
父组件给子组件
子组件设置props属性
父组件在使用子组件标签中通过字面量来传递值
子组件:
props:{name:String,age:{type:Number,default:18,require:ture //必须传递}}
父组件:
<Children name="jack" age=18/>
2.通过$emit 触发自定义事件
子组件给父组件
子组件 $emit 触发自定义事件,第二个参数未传递的数值
父组件绑定监听器获取到子组件传递过来的数据
子组件:
this.$emit('add',good)
父组件:
<Children @add="emitGood($event)"/>
3.使用ref
父组件在使用子组件的时候设置ref
父组件设置子组件ref来获取数据
<Children ref="foo">
this.$refs.foo
4.eventBus
兄弟组件传值
4.1 创建一个中央事件总线EventBus
4.2 通过$emit触发自定义事件,$emit 第二个参数未传递的数值
4.3 另一个兄弟组件通过$on 监听自定义事件
Bus.js
chidA.vue
chidB.vue
5.parent或root
6.provide 与 lnject
provide
和 inject
是 Vue 中用于在祖先组件和后代组件之间共享数据的一对 API。它们特别适用于需要在跨越多个中间组件的情况下传递数据的场景,并且可以一直延续
祖先:
子孙:ChildComponent
GrandChildComponent 是下一代
7.Vuex
复杂关系组件数据传递,vuex是一个存储共享变量的容器
7.1 state 存放共享变量
7.2 getter 用来获取共享变量的值
7.3 mutations 修改state (方法)同步
7.4 actions 修改state (方法)异步