如何用正确的状态更新减速器?
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 语法。
在我的 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 语法。