一个 Action 如何更新多个不同的Reducer?我该如何实现?

reactjs - 一个React-Redux Action 更新多个Reducer-LMLPHP

更新:

这是我在./actions/sync.js中的操作。此操作会定期连接到外部API并从“同步组件”中调用。

export function syncFetch(response) {
    return {
        type: 'SYNC_FETCH',
        response
    }
}

export function syncFetchData(url) {
    return (dispatch) => {
        fetch(url)
            .then((response) => {
                if (!response.ok) {
                    throw Error(response.statusText);
                }

                return response;
            })
            .then((response) => response.json())
            .then((sync) => updateAll(sync))
            .catch(() => console.log('error'));
    };
}

const updateAll = (params) => {
    return dispatch => {
        dispatch({type: 'SYNC_FETCH', payload: params})
    }
}

和./reducers/sync.js
const initialState = [];

export default (state = initialState, action) => {
    switch(action.type) {
        case 'SYNC_FETCH':
            return action.response;

        default:
            return state;
    }
}

我没有错误,但是数据没有更新。我的代码有什么问题?

最佳答案

每个 Action 都被分派(dispatch)给所有的 reducer , reducer 可以决定是否希望使用该 Action 来更新某些东西

你想要的是

const updateAll = params => {
    return {type: 'UPDATE_PARAMS', payload: params}
}

然后在不同的 reducer 中使用
const newReducer = (state= initialState, action) => {
   switch(action.type) {
      case 'UPDATE_PARAMS': return {
         ...state,
         // do some things here
      }
      ...
      default: return state;
   }
}

const userReducer = (state= initialState, action) => {
   switch(action.type) {
      case 'UPDATE_PARAMS': return {
         ...state,
         // do some things here
      }
      ...
      default: return state
   }
}

关于reactjs - 一个React-Redux Action 更新多个Reducer,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48880469/

10-16 10:45