使用react-native从另一个reducer更新reducer

时间:2018-04-25 07:54:26

标签: react-native redux

我想从react-native中的另一个reducer更新一个reducer的状态。我的代码是这样的。

这是行动。

export const doLike = payload => {
  // Recieving response from the server
  let updatedPost = {
    Id: 1,
    userId: 1,
    postId: payload.post._id,
    __v: 1,
    count: payload.type === 1 ? 10 : 1
  };

  return {
    type: SM_ACTION_LIKE,
    post: updatedPost
  };
};

这是接受行动的smReducer。

const initialState = {
  post: {}
};

const smReducer = (state = initialState, action) => {
  switch (action.type) {
    case SM_ACTION_LIKE:
      return {
        ...state,
        post: action.post
      };
      break;

    default:
      return state;
  }

  return state;
};

export default smReducer;

现在我想从这里更改mainFeedReducer的posts数组。我的mainFeedReducer就是这个。我想从smReducer访问mainFeedReducer的posts数组。

const initialState = Immutable({
  posts: [],
  featuredWorkouts: []
});

const mainfeedReducer = (state = initialState, action) => {
  switch (action.type) {
    case FETCH_MAIN_FEED:
      return {
        ...state,
        posts: action.mainFeedData.posts,
        featuredWorkouts: action.mainFeedData.featuredWorkouts
      };
      break;

    default:
      return state;
  }
};

我怎样才能做到这一点?

1 个答案:

答案 0 :(得分:1)

  

Redux架构围绕严格的单向数据流

正确的方法是设计您的减速机,以便处理更多数据。

正如docs

中所述

如果reducer需要知道来自另一个状态片的数据,状态树形状可能需要重新组织以便 >单个reducer处理更多数据

<强>替代

  • 您可以考虑使用 redux-thunk ,因为内部 函数,收到两个参数return (dispatch, getState), 可以访问整个州地图
  • 如果您有store对象的实例,则可以通过执行store.getState()
  • 直接访问各州