我有一个使用 Immutability.js 的 React + Redux 应用程序。在我的 reducer 中,我将状态定义为不可变列表
const initialSuggestedResponseState = Immutable.List([]);
每次发生特定操作时,我都想用新列表替换此列表。我认为我缺少 Immutability.js 的一些东西,因为我无法找到可行的解决方案。到目前为止,我已经尝试过这样的事情:
state.clear();
action.messages.forEach(message => {
let newResponse = new suggestedResponseRecord({
body: message.body,
responseId: message.response_id,
type: message.type
});
state.push(newResponse);
});
return state;
但是,这不会将任何东西推送到我的列表中。为什么这不起作用?适当的方法是什么?我确信有更简单的事情。
提前致谢:)
最佳答案
对任何类型的不可变对象(immutable对象)执行 state.push 都会返回一个新对象。现有状态不会被修改,这就是为什么在推送后返回状态不起作用的原因。一个快速的方法是将 state.push(newResponse);
更改为 state = state.push(newResponse);
。我建议您阅读更多有关不可变结构如何工作的内容:)
关于reactjs - Immutable JS - 如何用新列表替换列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40725361/