父子组件之间的传参

本文介绍了Vue.js中父子组件之间的通信方式。首先展示了如何通过属性绑定(props)实现父组件向子组件传递数据,然后讲解了子组件如何通过事件($emit)将信息传递回父组件。实例代码详细展示了这两个过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.父组件

<div>父组件</div>

2.子组件

<div>子组件</div>

3.父组件给子组件传参

------------------父组件
<template>
<!-- 通过:msgA=""给子组件传值 -->
  <div :msgA="msg">父组件</div>
</template>
<script>
export default {
  data() {
    msg: "hello world";//给子组件传的值
  },
};
</script>



-------------------子组件
<template>
<!-- 通过props接受值后可直接使用 -->
  <div>子组件{{msgA}}</div>
</template>
<script>
export default {
    // 子组件通过props接收父组件传来的值
  props: {
      //父组件传来的值需定义一下
    msgA: {
      type: String, //类型
    },
  },
  data() {},
};
</script>

4.子组件给父组件传值

------------------------子组件
<template>
  <div>子组件</div>
</template>
<script>
export default {
  data() {
    msg: "将要传给父组件的值";
  },
  created() {
    this.toFather();
  },
  methods: {
    toFather() {
      //   子组件通过$emit将data中的msg传递给父组件中的msgB事件
      this.$emit("msgB", this.msg);
    },
  },
};
</script>
-------------------------父组件
<template>
  <!-- 父组件通过子组件定义好的msgB触发父组件中的msgA获取传来的值 -->
  <div @msgB="msgA">父组件</div>
</template>
<script>
export default {
  data() {
    msg: "";
  },
  methods: {
    msgA(data) {
      this.msg = data; //这是子组件给父组件传来的值
    },
  },
};
</script>

Vue3 中父子组件之间数据递通常有两种常见的方法:props 和自定义事件(emits)。如果你需要从父组件循环地向子组件递参数,可以使用数组或者对象的方式。 **1. Props (props-in)** 这是最常见的方式,父组件通过props向下数据。假设你在父组件有一个数组: ```html <template> <div v-for="(item, index) in parentArray"> <child-component :prop="item" :index="index"></child-component> </div> </template> <script setup> import ChildComponent from './ChildComponent.vue'; const parentArray = ['value1', 'value2', 'value3']; </script> ``` 然后在子组件接收并显示这个值: ```vue <template> <p>Parent data: {{ prop }}</p> </template> <script> export default { props: { prop: String, // 如果需要递其他额外信息,如索引 index: Number } }; </script> ``` **2. 自定义事件 (emits)** 如果数据需要双向绑定或者动态更新,你可以考虑使用自定义事件: ```html <template> <div v-for="(item, index) in parentArray"> <child-component @update-child-data="handleUpdateData(index, item)" :data="item"></child-component> </div> </template> <script setup> import ChildComponent from './ChildComponent.vue'; const parentArray = ['value1', 'value2', 'value3']; function handleUpdateData(index, newValue) { setParentArray(index, newValue); } </script> ``` 在子组件内触发事件,递新值: ```vue <template> <button @click="updateData">Update Data</button> </template> <script> export default { methods: { updateData() { this.$emit('update-child-data', this.data); // 或者修改后的数据 } }, props: { data: String } }; </script> ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值