我正在使用getState()方法检索状态的一个切片,在事件处理程序中过滤一些来自状态的值(在分派操作并更新新状态切片之前)。但是更改getState()的结果似乎会更改实际存储。
考虑以下内容:
const filterInPlace = (array, predicate) => {
let end = 0;
for (let i = 0; i < array.length; i++) {
const obj = array[i]
if (predicate(obj)) {
array[end++] = obj
}
}
array.length = end
}
//some event handler
...
const forDeletion = new Set([...ids])
let currentState = getState().home.lists
filterInPlace(currentState, obj => !forDeletion.has(obj.rowid))
dispatch(handleSelectLists(ids)) //Leads to an action and reducer
getState()方法会返回当前的状态,但不会修改store。