uniapp vue3 Options API 父子组件传参,子组件是个view,传值是个对象,子组件如何更新值
时间: 2024-10-22 16:26:22 浏览: 46
在 UniApp 的 Vue3 中,特别是在使用 Options API 的模式下,父子组件之间的传参通常通过 props 来完成。如果子组件是一个自定义的视图 (View) 类型,并且你想从父组件传递一个对象给它,你可以按如下步骤操作:
1. **定义父组件**:
在父组件模板里,将需要传递的对象作为 prop 定义好,比如 `props: { dataObject: Object }`。
```html
<template>
<view :data-object="parentDataObj"></view>
</template>
<script setup>
import { ref } from 'vue';
const parentDataObj = ref({ key1: "value1", key2: "value2" });
</script>
```
2. **接收并使用在子组件**:
子组件通过 `v-bind` 或者 `:` 绑定这个 prop,然后在子组件的 `setup` 函数中可以访问到这个对象。
```html
<!-- 子组件.vue -->
<template>
<view :data-value="dataObject.value1" /> <!-- 这里的 value1 是父组件传递的对象属性 -->
</template>
<script setup>
import { inject } from 'uni-app';
const dataObject = inject('dataObject'); // 使用 inject 接收父组件传递的对象
</script>
```
注意,`inject` 只能在 setup 中使用,因为它是在运行时动态注入的,所以不需要在模板上显式地使用 prop。
如果你需要在子组件内部改变这个值,由于父组件不会自动更新子组件的 prop,你需要主动触发父组件的更新,例如:
```javascript
// 子组件内部修改数据
dataObject.value1 = 'newValue'; // 修改后,需通知父组件更新
emit('update:parentDataObj', dataObject); // 使用 emit 触发更新
```
阅读全文