redux - 当资源依赖于另一个时,如何适当地更新它们

时间:2017-06-20 03:45:25

标签: javascript reactjs redux

假设我有一个像这样的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()));
    });
  }
};

2 个答案:

答案 0 :(得分:1)

您的购买减少器可以“监听”某些特定用户的操作类型,如f.e. FETCH_USER_SUCCESS然后直接在那里更新该资源。

抱歉我的英文。

答案 1 :(得分:0)

我认为您必须向用户传递购买详情。