vue 父子组件传值之(父组件如何触发子组件中的方法,子组件调用父组件中的方法)

<button @click="clickParent">点击</button>
<child ref="mychild"></child>

**注意:**


  1、在子组件中:<div></div>是必须要存在的 


  2、在父组件中:首先要引入子组件 import Child from './child';


  3、 <child ref="mychild"></child>是在父组件中为子组件添加一个占位,ref="mychild"是子组件在父组件中的名字


  4、父组件中 components: {  是声明子组件在父组件中的名字


       5、*在父组件的方法中调用子组件的方法,很重要*   this.$refs.mychild.parentHandleclick("嘿嘿嘿");



#### 3.父传给子的方法


前言:


使用vue进行项目开发的时候,免不了组件之间的通信。父组件传递给子组件的值,子组件可以通过props获取。子组件想要改变数据,只能通过触发事件告诉父组件,我要变身了!父组件接收到信号,从而达到改变的目的。


**1、父组件传值给子组件**


**父组件:**




**子组件:**



这是子组件 //父亲传过来的值 {{ parentToChild}} //儿子收到后赋值的变量 {{ valueFromParent}}


 可以看出,父组件要传递给子组件的值为value1,key为parentToChild,在子组件接收时,用props接收。此时,如果打印this.valueFromParent,打印结果会是:父组件的值传给子组件


#### 4.子传给父的方法


 vue是禁止子组件直接向父组件传值的,所以只能通过触发事件来达到目的。


## **方法一、**


**子组件:**



这是子组件


**父组件:**



这是父组件


从中可以看出,子组件通过**sendValueToParent**事件方法,向父组件传递了4个值,在父组件的子组件标签里面要写上sendValueToParent这个事件。父组件拿到这四个值是通过**getValueFromChild**方法。


## **方法二、**


### 常用的方法总结下


* $emit
* $parent
* prop
* vuex(vuex代码比较麻烦,不写了,说下步骤吧 dispatch:actions=>commit:mutations)


#### $parent方法


**父组件**




**子组件**




#### $emit方法




### 最后

由于篇幅限制,pdf文档的详解资料太全面,细节内容实在太多啦,所以只把部分知识点截图出来粗略的介绍,每个小节点里面都有更细化的内容!



![](https://img-blog.csdnimg.cn/img_convert/bbe3448beec49dde35916dccaedb72d0.webp?x-oss-process=image/format,png)

![](https://img-blog.csdnimg.cn/img_convert/ce6ab900204fb105bd27ca5c50ac1d64.webp?x-oss-process=image/format,png)

tn() {
        this.$parent.fatherMethod()
      }
    }
  }
</script>

$emit方法

最后

由于篇幅限制,pdf文档的详解资料太全面,细节内容实在太多啦,所以只把部分知识点截图出来粗略的介绍,每个小节点里面都有更细化的内容!

[外链图片转存中…(img-lHdj7LSD-1720103913074)]

[外链图片转存中…(img-6BIrFrp0-1720103913076)]

### 父组件调用子组件方法参的实现方式 在 Vue 2 中,父组件可以通过 `ref` 来访问子组件实例,进一步调用其公开的方法以及递参数。以下是具体的实现过程: #### 使用 `ref` 访问子组件 父组件可以使用 `ref` 属性为子组件指定一个引用名称,从而获取到该子组件的实例对象。通过这个实例对象,可以直接调用子组件中定义的方法。 ```html <template> <div> <!-- 定义子组件为其设置 ref --> <ChildComponent ref="childComponent"></ChildComponent> <button @click="callChildMethod">调用子组件方法</button> </div> </template> <script> import ChildComponent from './ChildComponent.vue'; export default { components: { ChildComponent, }, methods: { callChildMethod() { // 调用子组件中的方法递参数 this.$refs.childComponent.someMethod('来自父组件的参数'); } } }; </script> ``` #### 子组件暴露方法 为了让父组件能够成功调用子组件方法,需要确保这些方法被正确地定义在子组件内部,且它们是可以对外可见的。 ```javascript // ChildComponent.vue export default { methods: { someMethod(param) { console.log(`接收到父组件递的参数:${param}`); // 接收打印参数 } } } ``` 上述代码展示了如何让父组件通过 `this.$refs.childComponent.someMethod()` 的形式调用子组件内的某个方法同时递所需的数据作为参数[^1]。 #### 参数递的具体场景 当涉及到实际业务逻辑时,可能还需要考虑更复杂的参数结构或者动态生成的内容。例如,在某些情况下,父组件可能会基于用户的输入或者其他条件计算出要递给子组件的实际。 ```javascript methods: { callChildMethod() { const dynamicParam = '这是经过处理后的动态参数'; this.$refs.childComponent.someMethod(dynamicParam); } } ``` 以上例子说明了即使是在运行过程中产生的变量也可以顺利地作为参数输至子组件之中[^2]。 ### 注意事项 尽管 Vue 提供了方便快捷的方式来进行父子组件之间的通信,但在设计应用架构的时候仍需注意保持良好的单向数据流原则,即尽量减少不必要的反向依赖关系,使得程序更加清晰易维护[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值