【问题标题】:Updating a reducer from another reducer in react-native在 react-native 中从另一个减速器更新减速器
【发布时间】:2018-04-25 07:54:26
【问题描述】:

我想在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 的帖子数组。我的 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;
  }
};

我怎样才能做到这一点?

【问题讨论】:

    标签: react-native redux


    【解决方案1】:

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

    正确的方法是设计您的 reducer,使其能够处理更多数据。

    docs中所述

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

    替代品

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

    【讨论】:

      猜你喜欢
      • 2017-07-03
      • 2021-01-13
      • 2019-04-20
      • 1970-01-01
      • 1970-01-01
      • 2019-02-14
      • 2021-10-13
      • 2017-08-21
      • 2017-08-31
      相关资源
      最近更新 更多