对Redux不变性的工作方式感到困惑

时间:2020-03-27 18:35:52

标签: reactjs redux

我正在学习Redux,我对reducer如何更新状态感到困惑。例如,下面是代码:

  data: {
    googleSpreadsheetKey: '16AL59eH385JODQsnbB9vYeJ0liSYgNbELRdkHhb78vE',
    seriesMapping: [{
      'hc-key': 0,
      'infiziert': 1,
      'tote': 2,
      'genesen': 3,
      'bundesland': 4
    }]
    ,
    complete: function(options) {
      options.series[0].name = 'Corona';
    }
  },

问题是,当运行此代码const initialState = { counter: 0 }; const counterReducer = (state = initialState, action) => { if(action.type==="INCREASE"){ return { counter: state.counter+1; } } return state; }; 时,它将在这里将计数器从0更改为1

counter: state.counter+1;

让我感到困惑的是,如果它不变地改变,那么如果运行此代码,有可能记住先前的状态:

const initialState = {
  counter: 0
};

不止一次。希望您能理解我的意思

1 个答案:

答案 0 :(得分:0)

counterReducer不需要访问以前的状态。

state.counter+1;正在访问state.counter的当前值,而不是先前的值。
我希望我没有误解了这个问题。

编辑问题1:Khreshna, ok but where does current state come from?
如果您熟悉其他语言,"10" + 1将返回各种错误,表明您无法使用字符串和整数进行数学运算。但不是javascript。

JS具有强制类型,这意味着它可以将类型转换为其他有关操作的类型。
长话短说,JS "10" + 1将返回101int 1被转换为字符串)。
null + 1中将返回1。那就是即使您从未设置计数器的值,您也能获得该值