React-native + Redux(Combine Reducers):创建状态结构

时间:2018-10-04 10:46:17

标签: reactjs react-native redux react-redux

我正在开发一个本机应用程序和redux的新功能。我有3个屏幕,几乎所有屏幕的所有状态都相互依赖。 例如,第一个屏幕扫描产品,第二个屏幕获取客户详细信息,第三个屏幕显示产品和客户的摘要。 自2天以来,我一直在努力创建状态结构,最后得到了 combineReducers 。但是在组合减速器中,每个减速器都维护自己的状态片,并且不允许我访问或更新另一个减速器的状态。 所以, Q1。我应该继续使用combieReducers还是应该仅维护一个减速器? Q2。如果CombineReducers正常,应该如何在所有reducer上访问或更新相同状态?

2 个答案:

答案 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);
};