使用传播即时更新数据

时间:2019-04-12 21:25:21

标签: reactjs immer.js

说我在redux中有状态

const initialState = {
 age: 0,
 title: undefined,
 body: undefined,
 author: undefined
}

我想用从后端获取的newState更新它,它具有完全相同的键(年龄,标题,正文,作者),因此为了使其不可变,我使用了散布运算符

const updateState = (state, newState) => {
 return {...state, ...newState}
}

问题是此函数运行良好,但是如果主体是对象并且其中嵌套了对象,该怎么办。我想做一个可以重用的功能。我不想一个接一个地手动更新

我遇到了Immer,但仍然不知道如何制作函数updateState(不是手动逐个更新键)。你能告诉我怎么做吗?

1 个答案:

答案 0 :(得分:0)

const updateState = produce((draft, action) => {
 Object.assign(draft, action);
})

const updateState = produce((draft, action) => {
 return {...draft, ...action}
})

在任何一种情况下,具有immer的想法是返回新状态或直接更改草稿对象,但绝不能两者都做。