Reactjs 如何替换部分Redux状态
我有一个packageReducer,它保存packageType和packageList相关的详细信息。从服务器获取详细信息后,我需要将初始状态值替换为已获取的新值。例如,如果已获取packageList,则只需替换“packageList”Reactjs 如何替换部分Redux状态,reactjs,redux,reducers,Reactjs,Redux,Reducers,我有一个packageReducer,它保存packageType和packageList相关的详细信息。从服务器获取详细信息后,我需要将初始状态值替换为已获取的新值。例如,如果已获取packageList,则只需替换“packageList” 下面是我的PackageState减速机 const initialState = { packageList: packageListInitialState, packageTypes: [{title: 'Select Packag
下面是我的PackageState减速机
const initialState = {
packageList: packageListInitialState,
packageTypes: [{title: 'Select Package Type', value: ''}],
};
export default function packageState( state = initialState, action ) {
switch ( action.type ) {
case FETCH_PACKAGE_LIST_SUCCESS:{
return Object.assign( {}, state, action.payload );
}
case FETCH_PACKAGE_TYPES_SUCCESS:{
return Object.assign( {}, state, action.payload );
}
default:
return state;
}
}
我实施的方式我认为我正在取代整个州,有人能告诉我如何实现它吗?多谢各位 假设您试图在中实现的操作只是
FETCH\u PACKAGE\u LIST\u SUCCESS
操作,负载是更新/获取的列表,那么您只需要返回一个对象,如下所示
由于您试图返回的对象仅更改了两个属性中的一个,因此可以对未更改的属性使用上一个状态的值,并更新另一个
const initialState = {
packageList: packageListInitialState,
packageTypes: [{title: 'Select Package Type', value: ''}],
};
export default function packageState( state = initialState, action ) {
switch ( action.type ) {
case FETCH_PACKAGE_LIST_SUCCESS:{
return { packageList: action.payload, packageTypes: state.packageTypes }
}
case FETCH_PACKAGE_SETTINGS_SUCCESS:{
return Object.assign( {}, state, action.payload );
}
default:
return state;
}
}
你不是:
var state={a:1,b:2,c:3}
var newData={a:4,b:5}
console.log(Object.assign({},state,newData))/{a:4,b:5,c:3}
您可以将ActionCreator添加到问题中吗?了解操作的内容会有所帮助。payloadThank you’s答案,如果我要再次设置初始状态,我应该按照下面的方式进行吗<代码>返回{…状态,packageList:packageListInitialState}代码>您是指默认情况?不,您需要有一个返回它的特殊案例,比如case RESET\u PACKAGE\u信息:return initialState代码>否,我的意思是,保存设置后,我需要将packageTypes设置为默认状态。在您的示例中,在RESET_PACKAGE_信息中,我需要将packageType设置为初始状态,并使用最新的值保留packageList,然后您只需执行return Object.assign({},state,{packageTypes:initialState.packageTypes})