我正在寻找一个纯函数,来修改我的不可变状态对象。作为参数给出的原始状态必须保持不变。当使用像Redux这样的框架时,这特别有用,并且使得在javascript中使用immutable对象变得更加容易。特别是因为已经可以使用Babel来处理对象扩散操作符。
我没有找到比首先复制对象,然后像这样分配/删除我想要的属性更好的方法:
function updateState(state, item) {
newState = {...state};
newState[item.id] = item;
return newState;
}
function deleteProperty(state, id) {
var newState = {...state};
delete newState[id];
return newState;
}
我觉得还可以再短一点
发布于 2016-04-11 23:40:58
Object.assign
是一种支持更多的ES6解决方案
const updateState = (state, item) => Object.assign({}, state, { [item.id]: item });
发布于 2019-03-05 13:30:41
尝试:
const { id, ...noId } = state;
和测试:
console.log(noId);
发布于 2018-02-02 07:18:21
从数组中删除项,只需使用filter ;)
CASE 'REMOVE_ITEM_SUCCESS':
let items = state.items.filter(element => element._id !== action.id);
return {
...state,
items
}
https://stackoverflow.com/questions/36553129
复制相似问题