【问题标题】:redux - when a resource depends on another, how to update them appropriatelyredux - 当一个资源依赖于另一个资源时,如何适当地更新它们
【发布时间】:2017-06-20 03:45:24
【问题描述】:

假设我有一个这样的 redux 状态树:

{
  user: null,
  purchases: [],
}

购买属于用户,所以我总是想在用户更新时更新购买(尽管购买也可以在其他时间更新)。

如何在用户变化时保持购买的最新状态?我也许可以在动作创建器中发送购买更新以向用户更新,但是我预见到每次添加依赖于当前用户的资源时都会向 fetchUser 动作创建器添加调度,这似乎是多余的。

我当前的动作创建者的代码如下(注意我使用 thunk 中间件):

用于获取user 的动作创建者:

export const fetchUserSuccess = user => ({
  type: FETCH_USER_SUCCESS,
  user,
});

export const fetchUserFailure = () => ({
  type: FETCH_USER_FAILURE,
});

export const fetchUser = () => {
  return dispatch => {
    return getLoggedInUser(resp => {
      const { user } = resp;
      return (
        user
          ? dispatch(fetchUserSuccess(user))
          : dispatch(fetchUserFailure())
      );
    });
  }
};

用于获取purchases 的动作创建者:

export const fetchPurchasesSuccess = purchases => ({
  type: FETCH_PURCHASES_SUCCESS,
  purchases,
});

export const fetchPurchasesFailure = () => ({
  type: FETCH_PURCHASES_FAILURE,
});

export const fetchPurchases = user => {
  return dispatch => {
    return getPurchases(user, resp => {
      const { purchases } = resp;
      return (
        purchases
          ? dispatch(fetchPurchasesSuccess(purchases))
          : dispatch(fetchPurchasesFailure()));
    });
  }
};

【问题讨论】:

  • 您在fetchPurchases 响应中得到任何purchases 数据吗?

标签: javascript reactjs redux


【解决方案1】:

您的购买缩减程序可能正在“监听”某些特定用户的操作类型,例如 f.e. FETCH_USER_SUCCESS,然后直接在其中更新该资源。

对不起我的英语。

【讨论】:

    【解决方案2】:

    我认为您必须向用户传递购买详细信息。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-04-05
      • 2019-05-26
      • 2022-07-12
      • 1970-01-01
      • 1970-01-01
      • 2013-08-11
      • 1970-01-01
      相关资源
      最近更新 更多