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

标签 javascript reactjs redux

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

{
  user: null,
  purchases: [],
}

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

当用户发生变化时,如何使购买的内容保持最新状态?我也许可以在操作创建者内部发送购买更新以更新用户,但随后我预计每次添加依赖于当前用户的资源时都会向 fetchUser 操作创建者添加发送,这似乎是多余的。 p>

我当前的 Action 创建器的代码如下(请注意,我使用 thunk 中间件):

用于获取用户的操作创建者:

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())
      );
    });
  }
};

用于获取购买的操作创建者:

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()));
    });
  }
};

最佳答案

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

抱歉我的英语不好。

关于javascript - redux - 当一个资源依赖于另一个资源时,如何适本地更新它们,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44643485/

相关文章:

javascript - (向后/向前)按键时的 DOM 导航

javascript - 运行测试后重置 document.body React 测试库

javascript - Redux-thunk 调度功能在 Laravel 上不起作用

react-native - react native + Redux : How to subscribe to changes in state?

javascript - 我需要根据 redux 状态用我的通用样式更新文件

javascript - Vue.js Router-Link 参数未定义

javascript - 当加载到内存中的 var 时,磁盘上的 JSON 文件是否占用相同的空间量?

javascript - 如何在 Angular Directive(指令)中获取当前dom元素

javascript - 从 Fetch 返回 HTML 有什么危险

javascript - 海洋协议(protocol) react 教程 npm 启动失败