我在Redux中有一个状态,当前呈现如下:
单击前的:
{0: {
open: false,
negation: false,
close: false
},
1: {
open: false,
negation: false,
close: false,
bool: "and"
}
}单击后的:
{0: {
open: false,
negation: false,
close: false
},
1: {}
}我想完全删除键1(通常是action.id)。
目前,减速机的情况如下:
case 'HANDLE_INCREASE_CHANGE':
return {
...state,
index: state.index + 1,
[state.index + 1]: {
open:false,
negation: false,
close: false,
bool: 'and'
}
}
case 'HANDLE_DECREASE_CHANGE':
return {
...state,
index: state.index - 1,
[state.index]: {}
}错误的部分是:
[state.index]: {}你能帮帮我吗?非常感谢!
发布于 2020-01-24 13:50:14
您应该能够调用delete state[action.id]。尽管在还原器函数中,您应该先获取状态的副本,然后从其中删除,然后返回复制的版本。
case: 'HANDLE_DECREASE_CHANGE':
const next = {...state}
delete next[action.id]
return next发布于 2020-01-24 14:00:18
您正在将新属性设置为state,以便删除,然后需要使用delete。记得先复制一份当前的文件。
case: 'HANDLE_DECREASE_CHANGE':
let nextState = {...state}
delete nextState[propToDelete]
return nextState我认为最好有一个元素数组,而不是直接将属性设置为sate对象。
const iniitalState = {
index: 0,
elements: []
}
case 'HANDLE_INCREASE_CHANGE': {
state.elements.push({
open:false,
negation: false,
close: false,
bool: 'and'
})
return {...state, index: state.index + 1, elements: [...state.elements] }
}
case 'HANDLE_DECREASE_CHANGE': {
let newElements = [...state.elements]
newElements.splice(action.indexToRemove, 1) // Removes Element
return {...state, index: state.index - 1, elements: [...newElements] }
}发布于 2020-01-24 13:50:35
删除您想要删除的键:
const resultingState = {...state, index: state.index - 1}
delete resultingState[state.index]
return resultingState或者使用rest参数提取它:
const {...extractedState, [state.index]: ignored} = state
return {...extractedState, index: state.index - 1}https://stackoverflow.com/questions/59897667
复制相似问题