未捕获错误:不可变js中的keyPath无效?

时间:2017-10-14 10:13:46

标签: javascript reactjs redux immutable.js

我只是创建一个函数来使用不可变的js从我的状态更新现有值,即使代码看起来很好,它会抛出无效的KeyPath Err

        const initialState = fromJS({
            all:[],
            tags:[],
            isPaginationData:true,
            isContactFetchingPagination:false
        });
    .....
        const findAndUpdateContact = (state,action) => {
            let {payload} = action;
            let findIndex = state.get('all').findIndex(i => i._id === payload._id);
            if(findIndex !== -1){
                console.log(typeof findIndex,findIndex);// Returns number , 0

                console.log(state.deleteIn(['all',findIndex]),"New State"); // not deleting throws an error

                return state
            }else {
                return state
            }
        };

....

1 个答案:

答案 0 :(得分:0)

找到要更新的索引后,可以使用setIn更新数据。 我会先找到索引(就像你做的那样):

let findIndex = state.get('all').findIndex(i => i.get('_id') === payload._id);

然后使用以下命令更新状态:

return state.setIn(['all', findIndex], 'new state');