为什么Redux.js在init上多次启动reducer函数?

时间:2015-10-27 12:24:21

标签: javascript reactjs redux

学习Redux.js并构建演示应用程序。

我有一个这样的减速器:

// Imports here
function blocksFunc(state = [], action) {

  switch (action.type) {

  case 'ADD_BLOCK':

    _id++;
    return [...state, {'_class' : 'basic', '_id' : _id }];

  default:

    state = []; 
    return state;
  }
}

const BlockGeneratorReducer = combineReducers({

  blocksFunc,
});

export default BlockGeneratorReducer;

我成功更新了状态,但是在登录时,我在页面加载时得到以下内容:

  

blocksFunc()类型:" @@ redux / INIT"

     

blocksFunc()类型:   " @@终极版/ PROBE_UNKNOWN_ACTION_b.f.4.q.y.o.a.v.2.t.9"

     

blocksFunc()类型:" @@ redux / INIT"

因此使用默认的action.type启动了三次blocksFunc函数。行动类型" @@ redux / INIT"推出?什么可能" @@ redux / PROBE_UNKNOWN_ACTIOM"参考?

可以在git上找到完整的源代码:https://github.com/JaakkoKarhu/redux-react-blockgenerator

将工作演示上传到我的服务器:http://jaakkokarhu.com/playground/redux-block-generator/

自从React和Redux成为新用户以来,关于源代码的所有其他评论也非常受欢迎。

编辑:

blocksFunc()根据DavidWalshes的建议编辑。

1 个答案:

答案 0 :(得分:32)

@@ redux / INIT故意启动两次。第一次是测试combineReducers,第二次是实际的init:https://github.com/reactjs/redux/issues/382

正如TenorB在问题评论中指出的那样,@@ redux / PROBE_UNKNOWN_ACTION也会启动以进行测试。

毕竟,这些事件并非偶然发起。