🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
# 一:父组件传值给子组件 ## 方法1.子组件使用props属性接值 #### ①先在父组件中引入子组件 ![](https://img.kancloud.cn/33/bf/33bf55ed3e15bc7405f480900e23fab3_682x172.png) ***** ***** ②在父组件中使用子组件,并通过属性把方法和变量传到子组件 ![](https://img.kancloud.cn/2f/b0/2fb006b5716382443669e8900496254f_447x183.png) ③在对应的子组件中使用props接收值,可以用数组或者对象 ![](https://img.kancloud.cn/94/43/9443d01dc4720f189a20cc32f343d129_311x146.png) 接收完对象或变量,使用this即可调用 ## 方法2:通过ref引用操作子组件 ①在引入的子组件中添加ref属性 ![](https://img.kancloud.cn/71/f3/71f3f042aa1ff62bf6146c1efd40f29a_601x187.png) ②通过ref属性操作子组件 ![](https://img.kancloud.cn/bb/83/bb830f18775f4505ddc07fade7c644d2_638x136.png) ## 方法3:通过$children方法找到对应的子组件 ## 方法4:依赖注入 ``` //父组件,定义方法或变量 provide: function () { return { getMap: this.getMap } } //子组件:接收方法或参数 inject: ['getMap'] ``` # 二:子组件传值给父组件 ## 方法1:通过$emit方法,然后在父组件中的对应子组件上,使用事件触发这个方法获取数据 ![](https://img.kancloud.cn/e0/ce/e0ce9665e52bd047f77c9fe76488b616_516x109.png) ***** 方法名需要和传递过来的一致 ![](https://img.kancloud.cn/95/b5/95b5ca56a02a106bf60c5e0625a3a187_685x82.png) ***** 此时即可使用获取的内容 ![](https://img.kancloud.cn/96/61/96616416da9378c47b88c7880763d275_319x135.png) ## 方法2:通过$parent获取父组件元素 ## 方法3:通过$root获取根组件元素 # 三:兄弟组件传值 bus ``` 1.新建一个bus.js文件,引入vue,代码如下 // 公共bus import Vue from "vue"; export default new Vue(); 2.引入bus.js,通过$emit返回方法和参数 import bus from "./bus.js"; bus.$emit("方法名",参数); 3.在兄弟组件中获取方法和参数: import bus from "./bus.js"; bus.$on("方法名",val=>{ console.log(val);//val就是传过来的参数 }) ```