一个 Action 如何更新多个不同的Reducer?我该如何实现?
更新:
这是我在./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/