如何用正确的状态更新减速机?

时间:2018-06-17 05:35:23

标签: reactjs redux react-boilerplate

在我的react / redux应用程序中,我有这个减速器:

import {fromJS} from 'immutable';

import {
  CHANGE_USERNAME,
  ADD_COUNTER
} from './constants';

// The initial state of the App
const initialState = fromJS({
  username: '',
  counter:0
});

function homeReducer(state = initialState, action) {
  switch (action.type) {
    case CHANGE_USERNAME:
      // Delete prefixed '@' from the github username
      return state
        .set('username', action.name.replace(/@/gi, ''));
    case ADD_COUNTER:
      return state
        .set('counter',state.counter+1)
    default:
      return state;
  }
}

export default homeReducer;

目前它击中了减速器,但没有更新计数器的状态。我错过了什么?链接到code

1 个答案:

答案 0 :(得分:1)

您使用的是immutable.js,因此您必须使用get来读取值

return state.set(‘counter’, state.get(‘counter’) + 1)

此外,您的代码正在导入fromJS,但未使用它。

Immutable.js有一个非常非JavaScripty语法,如果你不习惯它并且真的想在Redux中使用不变性我会建议使用Mori-Redux或无缝不可变,这两个都让你正确的js语法。