首先,我得到我的redux数组,然后在my_function中将其复制到新变量中,如下所示:
第一个月let new_transactions_list = [...transactions_list];
当我想改变我的new_transactions_list很深我得到了错误
const my_function = () => {
let new_transactions_list = [...transactions_list];
new_transactions_list[yearIndex].data_yearly[monthIndex].data_monthly.push(new_obj);
}
但是当我在class中定义一个数组时(没有redux),它就是work
1条答案
按热度按时间h79rfbju1#
即使使用扩展的
[...transactions_list]
,也只是复制了数组的第一层,这意味着该数组下面的对象仍然是redux使用的对象。您有两个选项:
这是redux建议您更新嵌套对象链接的方式
或者,您可以使用类似immer这样的函数,它允许您更新对象,即使对象是这样的不可变对象
无论采用哪种方式,您都必须在以后更新redux状态,因为这种更改将仅在代码中是本地的,而不是全局redux。