【发布时间】:2021-09-09 10:38:00
【问题描述】:
我正在学习 vue3 反应系统,无法弄清楚以下奇怪的行为。这是我的代码。
setup(props) {
let weekDay = props.weekDay;
let taskState = reactive({
[weekDay]: [[{
description: '',
status: '',
}]],
});
function changeStatus(index, event) {
let task = taskState[weekDay][index]; //works
taskState[weekDay][index] = {
...task,
status: event.target.value
};
}
return {
taskState,
changeStatus
}
}
反应性地更新状态看起来很有效,但是如果我像下面这样更改函数,这将不起作用。为什么会这样?对象 task 和 taskState[weekDay][index] 不是 一样吗?
function changeStatus(index, event) {
let task = taskState[weekDay][index]; //not works
task = {
...task,
status: event.target.value
};
}
【问题讨论】:
-
我看到你在嵌套另一个数组
[[{ description: '', status: '', }]]我想应该是[{ description: '', status: '', }] -
@BoussadjraBrahim -
taskState[weekDay][index]在这两种情况下都是对象,而不是数组 -
它会给出类似
[{ description: '', status: '', }] -
@BoussadjraBrahim 没关系,问题是为什么我需要显式更新任务状态对象来触发反应性,而不是像任务一样与引用相同的另一个对象?
标签: javascript javascript-objects vuejs3