use*_*768 0 javascript reactjs immutable.js redux
我是 redux 的新手,请问这是在以下代码中执行 redux 的正确方法吗?当调用 action 来执行 currentTime 时,这是一个 reducer 方法。
import { combineReducers } from 'redux';
import { UPDATE_TIME } from './actions';
import { Map } from 'immutable';
const initialState = Map({update:false, currentTime: ""});
function currentTime(state = initialState, action) {
switch (action.type) {
case UPDATE_TIME:
return {...state, update: true, currentTime: action.time };
default:
return state;
}
}
const currentTimeReducer = combineReducers({
currentTime
});
export default currentTimeReducer
Run Code Online (Sandbox Code Playgroud)
有多种方法可以做到
您可以使用set()功能设置值
case UPDATE_TIME:
state = state.set('update', true);
return state.set('currentTime', action.time);
Run Code Online (Sandbox Code Playgroud)
甚至
case UPDATE_TIME:
return state.set('update', true)
.set('currentTime', action.time);
Run Code Online (Sandbox Code Playgroud)但是,当您有多个更改时,这是不可行的
另一种选择是 merge()
case UPDATE_TIME:
return state.merge({update: true, currentTime: action.time})
Run Code Online (Sandbox Code Playgroud)但是,在嵌套状态更新的情况下,您需要执行 deepMerge。查看详情mergeDeep
| 归档时间: |
|
| 查看次数: |
2630 次 |
| 最近记录: |