uniapp 父组件怎给孙子传值
时间: 2024-12-12 16:23:38 浏览: 9
在uniApp中,如果你想从父组件向孙子组件传递数据,可以利用Vuex(状态管理库)或者props(属性)进行数据流动。以下是两种常见的做法:
**1. 使用Vuex**
- 如果你的应用需要在整个项目中共享状态,Vuex是一个很好的选择。父组件首先将数据存储在store中,然后通过props把store里的state或mutation传递给中间层的组件(如爷爷组件),再由这个中间层组件传递给孙子组件。
```javascript
// 父组件
import store from '@/store'
export default {
props: ['grandsonData']
}
...
computed: {
grandsonValue() {
return this.grandsonData.value;
}
},
methods: {
sendDataToGrandson(newVal) {
this.$store.commit('setGrandsonValue', newVal);
}
}
// 孙子组件(接收prop)
<template>
<view>{{ grandsonValue }}</view>
</template>
<script>
export default {
props: {
grandsonData: {
type: Object,
default: () => ({ value: '' })
}
}
}
</script>
```
**2. 直接使用props(深度递归)**
如果数据不需要全局管理,可以直接从父组件一层层往下传。这种方法适合数据层级较浅的情况。
- 父组件
```html
<template>
<child-grandfather :data="parentData" />
</template>
<script>
export default {
data() {
return { parentData: { grandChildData: '初始值' } };
}
};
</script>
```
- 爷爷组件
```html
<template>
<child-grandson :data="data" />
</template>
<script>
export default {
props: {
data: {
type: Object,
default: {}
}
}
};
</script>
```
- 孙子组件
```html
<template>
<div>{{ data.value }}</div>
</template>
<script>
export default {
props: {
data: {
type: Object,
required: true,
default: {}
}
}
};
</script>
```
阅读全文