Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/379.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/27.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中从reducer返回状态?_Javascript_Reactjs_Redux - Fatal编程技术网

Javascript 为什么我们需要在Redux中从reducer返回状态?

Javascript 为什么我们需要在Redux中从reducer返回状态?,javascript,reactjs,redux,Javascript,Reactjs,Redux,我是Redux新手,试图了解如何正确使用Redux,但我遇到了一个困惑,即为什么我们需要在reducer中返回状态。代码如下: const initialState = { counter: 0 }; const reducer = (state = initialState, action) => { if (action.type === "INCREMENT") { return { counter: state.counter + 1 };

我是Redux新手,试图了解如何正确使用Redux,但我遇到了一个困惑,即为什么我们需要在reducer中返回状态。代码如下:

const initialState = {
  counter: 0
};

const reducer = (state = initialState, action) => {
  if (action.type === "INCREMENT") {
    return {
      counter: state.counter + 1
    };
  }
  return state;  // why do we need to use this code?
};

export default reducer;

基本上,reducer将预定义对象的先前状态作为参数获取,并且函数必须在每种情况下返回对象的新状态

在Redux reducers文档中,您可以看到以下语句:

reducer是一个纯函数,它接受前一个状态和一个操作,并返回下一个状态

请在Redux中进一步阅读。

如果您看到文档

缩减器指定应用程序的状态如何响应发送到存储的操作而改变。请记住,操作只描述发生了什么,而不描述应用程序的状态如何变化

所以,无论何时调用操作,reducer都必须基于该操作返回一个新状态。 在您的案例中,
(action.type==“INCREMENT)
如果action.type与您的案例不匹配,并且您没有设置任何默认案例,它将返回
空值


现在,如果您不返回任何值,您的redux状态将不会提及您的给定状态,这就是为什么需要默认状态来维护reducer存储中的状态数据。

因为这是API所要求的吗?@jonrsharpe,请您澄清一下,我不知道该怎么说。redux reducer的API是它返回一个状态。可能会读到我们需要返回状态,以便连接到存储的组件可以获得存储状态,