Reactjs 如何替换部分Redux状态

Reactjs 如何替换部分Redux状态,reactjs,redux,reducers,Reactjs,Redux,Reducers,我有一个packageReducer,它保存packageType和packageList相关的详细信息。从服务器获取详细信息后,我需要将初始状态值替换为已获取的新值。例如,如果已获取packageList,则只需替换“packageList” 下面是我的PackageState减速机 const initialState = { packageList: packageListInitialState, packageTypes: [{title: 'Select Packag

我有一个packageReducer,它保存packageType和packageList相关的详细信息。从服务器获取详细信息后,我需要将初始状态值替换为已获取的新值。例如,如果已获取packageList,则只需替换“packageList”

下面是我的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})