在我的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
答案 0 :(得分:1)
您使用的是immutable.js,因此您必须使用get
来读取值
return state.set(‘counter’, state.get(‘counter’) + 1)
此外,您的代码正在导入fromJS
,但未使用它。
Immutable.js有一个非常非JavaScripty语法,如果你不习惯它并且真的想在Redux中使用不变性我会建议使用Mori-Redux或无缝不可变,这两个都让你正确的js语法。