React native 如何从不同的减速器更新状态?

React native 如何从不同的减速器更新状态?,react-native,react-redux,React Native,React Redux,如何更新配置文件?我正在创建用户可以更改其个人资料的位置 Object { "profile": Object { "name": Object {}, "address": Object {}, "settings": Object { "editName": Object {}, "editAddress": Object {}, } } Reducer.js. import {combineReducers} fr

如何更新配置文件?我正在创建用户可以更改其个人资料的位置

Object {    
   "profile": Object {
      "name": Object {},
      "address": Object {},
   "settings": Object {
      "editName": Object {},
      "editAddress": Object {},
   }
}
Reducer.js.

import {combineReducers} from 'redux';
import {ProfileReducer as profile} from '../routes/Profile/modules/Profile';
import {SettingsReducer as settings} from '../routes/Settings/modules/Settings';

export const makeRootReducer = () => {
    return combineReducers({
        profile,
        settings
    });
}

export default makeRootReducer;
这是我在settings reducer中的代码。当我运行应用程序时,会在设置对象内创建一个新对象。“设置”和“轮廓缩减器”位于不同的文件夹中。我没有把全部密码都写进去

设置还原程序js

export function saveEdit(type){
    return (dispatch,getState) => {
        var storeData = '';
        var editType = '';
        var allState = getState();
        var profile = getState().profile;
        if(type == 'Name'){
            storeData = allState.settings.editName;
            editType = 'name';
        }
        else if(type == 'Address'){
            storeData = allState.settings.editAddress;
            editType = 'address';
        }
        dispatch({
            type: SAVE_EDIT,
            ...profile,
            [editType]: storeData                     
        })
    }
}

function handleSaveEdit(state,action){
    return update(state,{
        profile: {
            $set: action.profile
        }
    });
}
const ACTION_HANDLERS = {
    SET_NAME: handleSetName,
    SET_ADDRESS: handleSetAddress,
    SAVE_EDIT: handleSaveEdit,
};


const initialState = { 
    editName: {},
    editAddress: {},
};

export function SettingsReducer(state = initialState,action){
    const handler = ACTION_HANDLERS[action.type];

    return handler? handler(state,action) : state;
}

我预计,如果用户点击保存按钮,来自设置对象的数据将更改来自配置文件对象的数据

因为您已经组合了减速器,所以所有操作都会传递给所有减速器。因此,您可以调度一个操作,并因此更新多个还原程序

假设您希望在调度类型为
'SAVE\u EDIT'
的操作时更新配置文件的状态,您可以让profileReducer响应该类型的操作

让我们假设profileReducer看起来有点像这样:

const INITIAL_STATE = {}

const profileReducer = (state = INITIAL_STATE, action) => {
  switch (action.type) {
    case 'PROFILE_RESET':
      return INITIAL_STATE
    ... // other cases
    default:
      return state
  }
}

export default profileReducer
然后,您可以简单地为
'SAVE\u EDIT'
添加一个案例,并在调度该类型的操作时执行该案例

case 'SAVE_EDIT': {
  const newState = ... // Generate newState using state and action
  return newState
}

您需要更新的配置文件对象在哪里?它是在profileReducer、组件状态还是数据库中?它在profileReducer中