不能在数据中使用计算 属性
Can't use computed property in data
我的数据中有一个数组:
data () {
return {
steps: [
{
disabled: this.someCheck
}
]
}
}
和计算的 属性:
computed: {
...mapGetters({
getFinishedSteps: 'jobFound/getFinishedSteps'
}),
someCheck () {
let x = true
for (const val of this.getFinishedSteps) {
if (val === ('address_information' || 'contact_information' || 'financiel_information' || 'identity_information')) {
x = false
}
}
return x
}
}
和模板:
<ProgressContent
v-for="(step, n) of steps"
:key="n"
/>
ProgressContent 组件:
props: {
step: {
type: Object,
default: () => ({
disabled: false
})
},
}
我想将 someCheck
计算的 属性 的 return 值传递给数据中的 disabled
值,但在 ProgressContent
组件中disabled
值不存在(它是空的)。
您不能在数据初始化时将计算分配给数据 属性。即使你可以,它也不会是反应性的,它只会发生一次。如果计算值发生变化,数据 属性 不会。
您可以将 steps
创建为 computed:
computed: {
...mapGetters({
getFinishedSteps: 'jobFound/getFinishedSteps'
}),
someCheck () {
// ...
},
steps() {
return [{ disabled: this.someCheck }]
}
}
或者您可以使用 手表:
data() {
return {
steps: [{ disabled: null }]
}
},
computed: {
...mapGetters({
getFinishedSteps: 'jobFound/getFinishedSteps'
}),
someCheck () {
// ...
}
},
watch: {
someCheck: {
handler(newValue) {
this.steps[0].disabled = newValue;
},
immediate: true
}
},
我的数据中有一个数组:
data () {
return {
steps: [
{
disabled: this.someCheck
}
]
}
}
和计算的 属性:
computed: {
...mapGetters({
getFinishedSteps: 'jobFound/getFinishedSteps'
}),
someCheck () {
let x = true
for (const val of this.getFinishedSteps) {
if (val === ('address_information' || 'contact_information' || 'financiel_information' || 'identity_information')) {
x = false
}
}
return x
}
}
和模板:
<ProgressContent
v-for="(step, n) of steps"
:key="n"
/>
ProgressContent 组件:
props: {
step: {
type: Object,
default: () => ({
disabled: false
})
},
}
我想将 someCheck
计算的 属性 的 return 值传递给数据中的 disabled
值,但在 ProgressContent
组件中disabled
值不存在(它是空的)。
您不能在数据初始化时将计算分配给数据 属性。即使你可以,它也不会是反应性的,它只会发生一次。如果计算值发生变化,数据 属性 不会。
您可以将 steps
创建为 computed:
computed: {
...mapGetters({
getFinishedSteps: 'jobFound/getFinishedSteps'
}),
someCheck () {
// ...
},
steps() {
return [{ disabled: this.someCheck }]
}
}
或者您可以使用 手表:
data() {
return {
steps: [{ disabled: null }]
}
},
computed: {
...mapGetters({
getFinishedSteps: 'jobFound/getFinishedSteps'
}),
someCheck () {
// ...
}
},
watch: {
someCheck: {
handler(newValue) {
this.steps[0].disabled = newValue;
},
immediate: true
}
},