Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/478.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么Redux.js在init上多次启动reducer函数?_Javascript_Reactjs_Redux - Fatal编程技术网

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

Javascript 为什么Redux.js在init上多次启动reducer函数?,javascript,reactjs,redux,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 s

学习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()类型: “@@redux/PROBE\u UNKNOWN\u ACTION\u b.f.4.q.y.o.a.v.2.t.9”

blocksFunc()类型:“%redux/INIT”

因此,blocksFunc函数使用默认的action.type启动了三次。在哪些情况下启动操作类型“@@redux/INIT”?“@@redux/PROBE\u UNKNOWN\u ACTIOM”在中可能指什么

可以在git上找到完整的源代码:

工作演示已上载到我的服务器:

由于是React和Redux的新版本,因此关于源代码的所有其他评论也都非常受欢迎

编辑:


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

@@redux/INIT是故意启动两次的。第一次用于测试组合传感器,第二次用于实际初始化:

正如TenorB在问题评论中指出的那样,“为了测试目的,还启动了。@@redux/PROBE_UNKNOWN_”操作


因此,毕竟,这些事件不是意外启动的。

点是扩展运算符。它将数组中的元素拆分为单独的参数。e、 g.f(…[a,b,c])是f(a,b,c)的等价物。不要使用state.push()。你绝不能在Redux中改变你的状态。您应该有:return[…state,{''u class':'basic','u id':'u id}];当遇到未知操作时,为什么要将状态设置为空数组?@TenorB哦,实际上没有理由这样做,这也没什么大不了的,因为这个演示只是为了好玩。不过,说得好,我以前根本没想过。看看为什么要发送探测动作。目的是测试减速器是否正确处理未知动作。那么,答案是“这是默认行为”。是吗?@EliseChant据我所知,是的。