Vue3 父子组件传值, 跨组件传值,传函数

目录

1.父组件向子组件传值

1.1 步骤

1.2 格式

2. 子组件向父组件传值

1.1 步骤

1.2 格式

3. 跨组件传值

运行

4. 跨组件传函数

​5. 总结

1. 父传子

2. 子传父

3. 跨组件传值(函数)


1.父组件向子组件传值

1.1 步骤

  1.  在父组件中引入子组件
  2.  在子组件标签中自定义属性
  3.  在子组件里使用definePorps(["属性名"])获取

1.2 格式

父组件:

<Down propMsg = '值' />  

<子组件名 自定义属性名 = '值'
子组件:

const emits = defineProps( [ ' 自定义属性名 ' ] )

2. 子组件向父组件传值

1.1 步骤

  1. 在子组件中自定义事件
  2. 在子组件中使用defineEmits定义对象
  3. 使用对象(事件名.{参数})

1.2 格式

子传父

父组件

<Down @emitsMsg = '函数名'

<子组件名 @自定义事件 = '函数名'

子组件

const emits = defineEmits( [ " emitMsg " ] )

const emits = defineEmits( [ ' 自定义事件名 ' ] )

3. 跨组件传值

也就是 A是B的父组件 , B是C的父组件 , 而A组件需要给C组件传递参数(值,对象,响应式数据等)

首先准备三个vue文件

在App(爷组件)中, 定义一个数据, 并用provide函数, 引入Son.vue(子组件)

在Son.vue中引入sonson.vue组件(孙组件)

 在sonson.vue组件中, 用inject()函数去获取值

运行

4. 跨组件传函数

与跨组件传值类似, 只不过是将一个 换成了 函数

首先定义一个函数, 然后通过provide()进行传函数

5. 总结

1. 父传子

在父组件中自定义属性名, 然后在子组件中, 使用defineProps( [ ' 属性名 ' ] ) 获取值

2. 子传父

在父组件中自定义事件名, 然后子组件用defineEmits( [ ' 事件名 ' ] )来创建对象, 再通过对象调用函数对父组件进行传值 

3. 跨组件传值(函数)

首先在爷组件中定义数据, 然后使用 provide( ' 数据名 ' , 数据 ) 传递数据.  在孙子组件中, 使用inject( ' 数据名 ' ) 函数来接收数据

Vue3父子组件之间的数据递主要有以下几种方式: 1. **props(属性)**:这是最常见的方式,父组件通过`props`向下递数据给子组件。父组件创建子组件时,可以在`<child>`标签内定义需要从父组件接收的数据,并设置`v-bind`或简写`:`绑定到对应的 props 上。子组件只能读取props,不能修改,除非父组件显式地允许。 ```html <!-- 父组件 --> <template> <div> <child :message="parentMessage"></child> </div> </template> <script> export default { data() { return { parentMessage: &#39;Hello from Parent&#39; }; }, }; </script> ``` 2. **自定义事件($emit)**:子组件可以通过`$emit`触发一个自定义事件,并将数据作为参数发送给父组件。父组件需要监听这个事件并处理接收到的数据。 ```html <!-- 子组件 --> <template> <button @click="$emit(&#39;update:message&#39;, &#39;New message from Child&#39;)"> Send Message </button> </template> <script> export default { methods: { sendMessage() { this.$emit(&#39;update:message&#39;, &#39;Child sent a message&#39;); } } }; </script> ``` 3. **ref(响应式引用)**:适用于更复杂的场景,如双向数据绑定。当子组件需要修改的状态需要回流给父组件时,可以使用`ref`并配合`setup()`函数里的`reactive`或`ref`。 4. **提供自定义计算属性**:如果数据需要经过一定的计算才能得出,父组件可以直接暴露一个计算属性供子组件访问。 5. **Vuex(状态管理)**:对于应用级别的状态管理,可以使用Vuex,它让父子组件共享状态变得更容易。 在实际项目中,选择哪种方式取决于需求的复杂度和性能考虑。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值