Vue3 组件通信
十二月 04, 2020
Vue组件通信
- 父->子
- 子->父
- 非父子
- 跨组件通信
父子组件通信
- 父组件传递给子组件money数据
- html: 父组件中的子组件绑定自定义属性 :money=”money”
- js: 子组件用props属性接收
- html: 子组件就可以使用父组件的money数据
1 | <div id="app"> |
1 | Vue.createApp({}) |
tips: 属性校验
1 | // props用法 |
子父组件通信
- 子组件传递给父组件数据,父组件来接收
- html: 父组件中的子组件使用自定义事件【事件名自定义】形式(@get=”setXjk”),讲父组件方法传递给子组件
- js: 子组件设置一个方法(give)执行父组件传递过来的那个自定义事件
- Vue提供了一个 $emit // this.$emit(自定义事件名称,参数)
- html: 给子组件按钮绑定这个方法(@click=”give”)
1 | <div id="app"> |
1 | Vue.createApp({}) |
非父子组件通信
- 案例: 姐姐揍弟弟,弟弟哭
- 弟弟有一个数据cryFlag和方法setCryFlag
- 姐姐想要使用弟弟的方法来控制弟弟给的数据
- 通过共同的父组件,其中父组件的son组件中打一个ref标记,用于父组件获取son组件的方法(ref=”son”)
- 父组件设置一个kick方法 里面的this.$refs包含son组件的方法(console.log(this.$refs))
- 父组件的sister组件中绑定自定义属性 :kick=”kick”, sister组件通过props接收
1 | <div id="app"> |
1 | Vue.createApp({}) |
跨组件通信
- 父组件里面有个属性 provide,在里面写数据
- 子孙组件有个属性 inject ,注入上面给的数据
1 | <div id="app"> |
1 | Vue.createApp({}) |
查看评论