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

How to update reducer with right state?

在我的 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;

目前它命中减速器,但计数器的状态尚未更新。我错过了什么? link 至 code

你使用 immutable.js 所以你必须使用 get 来读取值

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

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

Immutable.js 有一个非常非 JavaScripty 的语法,如果你不习惯它并且真的想在 Redux 中玩弄不可变性,我建议你看看使用 Mori-Redux 或 seamless-immutable,两者其中让你正确的 js 语法。