我正在开发一个本机应用程序和redux的新功能。我有3个屏幕,几乎所有屏幕的所有状态都相互依赖。 例如,第一个屏幕扫描产品,第二个屏幕获取客户详细信息,第三个屏幕显示产品和客户的摘要。 自2天以来,我一直在努力创建状态结构,最后得到了 combineReducers 。但是在组合减速器中,每个减速器都维护自己的状态片,并且不允许我访问或更新另一个减速器的状态。 所以, Q1。我应该继续使用combieReducers还是应该仅维护一个减速器? Q2。如果CombineReducers正常,应该如何在所有reducer上访问或更新相同状态?
答案 0 :(得分:2)
对于您的第一个问题,是的,您必须合并,因为 combineReducers 将在单个对象中提供所有减速器数据
示例:
const rootReducer = combineReducers({
posts: PostsReducer,
form: formReducer
});
内部组件
function mapStateToProps(state) {
return { posts: state.posts };
}
export default connect(mapStateToProps, { createPost })(PostsIndex);
在上述代码中,通过Redux connect您可以访问组件内部这样组合reducera产生的状态
要更新您的状态,您需要触发一个通过所有减速器的操作,并根据类型可以更新状态
示例:
export function createPost(values, callback) {
const request = axios
.post(`${ROOT_URL}/posts${API_KEY}`, values)
.then(() => callback());
return {
type: CREATE_POST,
payload: request
};
}
答案 1 :(得分:0)
使用中间件可以实现功能性
export default ({ dispatch, getState }) => next => action => {
next(action);
const newAction = { ...action, payload: "",state:getState () };
dispatch(newAction);
};