Moh*_*mad 7 javascript reactjs redux react-redux
我开始学习更好的redux+reactjs
例如,我有一个新闻或列表缩减程序,它应该返回一个包含新闻项的数组:
const list = [
{id: 1, title: 'One'},
{id: 2, title: 'Two'},
{id: 3, title: 'Three'}
]
export function newsReducer(state = [], action) {
switch (action.type) {
case 'GET_NEWS':
return list
default:
return state
}
}
Run Code Online (Sandbox Code Playgroud)
这段代码工作正常,但在其他文章中我看到它们以 [...state, ...] 和不可变格式传递参数...
那么我可以简单地传递参数还是应该以不可变的格式传递?
谢谢
简而言之:是的,如果最适合您的需求,您可以传递简单的数组。
如果您要使用简单数组,请确保在进行修改时返回一个新数组。
例如:
export function listChangeReducer = (state = [], action) => {
switch action.type {
case 'ADD_ITEM':
// don't do this because you're mutating your state
// state.push(action.item);
// instead do this
state = state.slice();
state.push(action.item);
// or alternatively you can use the destruct syntax
//[...state, action.item];
return state;
break;
}
};
Run Code Online (Sandbox Code Playgroud)
您不需要将 immutablejs 数据结构与 redux 一起使用。只是推荐这样做,这样您就不会意外改变数据结构。
文档指出数据需要不可变,因为
Redux 和 React-Redux 都采用浅层相等检查。尤其:
Redux 的combineReducers 实用程序浅层检查由它调用的reducer 引起的引用更改。
归档时间: |
|
查看次数: |
10556 次 |
最近记录: |