React-Redux:在状态下连接到数组时无限循环?

时间:2016-03-19 19:40:01

标签: javascript reactjs state infinite-loop redux

所以我试图将元素添加到我存储在状态中的数组中。我知道你不应该直接改变状态,所以我发现使用File是最好的方法。

然而,当我尝试这样做时,我会得到一个无限循环。

reducer.js:

concat

结果为const initialState = { name : null, //puzzle name start : [] }; export default createReducer(initialState,{ [START_PROCESS]: (state,payload) => { return Object.assign({},state,{ start : state.start.concat(['test']); }) } });

e.g:

  • 设置['test','test','test','test'...正常工作
  • 设置start: state.start会导致start: state.start + 'test'
  • 的无限循环

我不知道是什么导致了这种奇怪的行为。据我所知,状态只是通过创建一个新状态来修改,所以它无法反馈回来。

createReducer.js

testtesttest..

startAction.js

export function createReducer(initialState, reducerMap) {
    return (state = initialState, action) => {
        const reducer = reducerMap[action.type];

        return reducer
            ? reducer(state, action.payload)
            : state;
    };
}

viewAction.js

const START_PROCESS = 'START_PROCESS';
export function startProcess(data) {
  return {
    type : START_PROCESS,
    payload : {
      data : data //where data is a string
    }
  }
}

1 个答案:

答案 0 :(得分:2)

避免状态突变的最佳方法肯定是ImmutableJS。在你的情况下,我会说,也许你称你的行为是错的。你确定它没有在渲染中调用吗?