无法根据道具更新数据
Can't update data based on props
我有一个组件层次结构 A、B 和 AccountCard。在组件A中,我执行了一次账户验证,并将结果通过props传递给组件B,基于props的组件应该更新数据并将其传递给子组件AccountCard。如果我使用波纹管方法,我会收到错误“无法读取未定义的 属性 'isActiveAccount'”。基于这个变量,我必须显示一个或另一个按钮。如何根据道具更新数据?
{
.....
<template>
<AccountCard
v-for="(item, index) in accountDetails"
:key="index"
:item="item"
/>
</template>
export default {
components: {
.....
},
props: {
isActiveAccount: {
type: Boolean,
default: false
}
},
data: () => ({
......
accountDetails: [
{
isActive: this.isActiveAccount,
}
]
})
}
当道具改变时,如果你想更新数据值,那么使用下面的方法
export default {
components: {
.....
},
props: {
isActiveAccount: {
type: Boolean,
default: false
}
},
data: () => ({
......
accountDetails: {
isActive: false, // set inital value to be null if you want to check if the watch handler is really working
}
}),
watch: {
isActiveAccount(newVal) {
this.accountDetails.isActive = newVal; //Change added
},
}
更改:我建议您不要将其作为数组,而是将其作为对象保存。而且watch会在挂载完成后立即触发,不用担心
我有一个组件层次结构 A、B 和 AccountCard。在组件A中,我执行了一次账户验证,并将结果通过props传递给组件B,基于props的组件应该更新数据并将其传递给子组件AccountCard。如果我使用波纹管方法,我会收到错误“无法读取未定义的 属性 'isActiveAccount'”。基于这个变量,我必须显示一个或另一个按钮。如何根据道具更新数据?
{
.....
<template>
<AccountCard
v-for="(item, index) in accountDetails"
:key="index"
:item="item"
/>
</template>
export default {
components: {
.....
},
props: {
isActiveAccount: {
type: Boolean,
default: false
}
},
data: () => ({
......
accountDetails: [
{
isActive: this.isActiveAccount,
}
]
})
}
当道具改变时,如果你想更新数据值,那么使用下面的方法
export default {
components: {
.....
},
props: {
isActiveAccount: {
type: Boolean,
default: false
}
},
data: () => ({
......
accountDetails: {
isActive: false, // set inital value to be null if you want to check if the watch handler is really working
}
}),
watch: {
isActiveAccount(newVal) {
this.accountDetails.isActive = newVal; //Change added
},
}
更改:我建议您不要将其作为数组,而是将其作为对象保存。而且watch会在挂载完成后立即触发,不用担心