React / Redux-什么时候应该从API获取新数据来更新商店?

时间:2018-07-20 08:17:57

标签: javascript reactjs api redux frontend

我正在尝试使用来自API的数据更新/刷新Redux状态时的最佳实践。

考虑这种情况:

您有一个“待办事项”应用程序,其中有许多用户可能在任何给定时间点更新与您相同的“待办事项”。显然,您希望本地Redux商店最终反映其他用户的这些更改。

你愿意吗

  • 获取路线更改时待办事项的更新集吗?
  • 何时/如果用户对“待办事项”进行了更改或与之交互,是否获取了该待办事项的更新版本?
  • 都是吗?
  • 从不-一旦获取状态,便将其保存在商店中,它成为该会话的真相来源(显然不理想)
  • 还有什么?

我现在不希望将更改推送到客户端,也不需要轮询API(嗯!)。我只是想对大多数开发人员何时刷新以Redux状态存储的API派生数据达成某种共识。

2 个答案:

答案 0 :(得分:0)

如果您不想推送或轮询,则在用户请求时获取数据。从不提取可能非常适合边缘案例应用程序,但绝对不是常见的用例。

答案 1 :(得分:0)

这是我从你的问题中得到的

  1. 应用中的相同空间由多位用户更新。
  2. 该应用程序上的任何用户都必须由其他用户完成更改。
  3. 您想知道何时获取数据或刷新商店。
  

我现在不打算将更改推送给客户,也没有兴趣   轮询API(嗯!)。

我不明白这是干什么的。您可能没有在更新应用程序,但要查看应由一个或其他人更新您的应用程序的更改。

除此之外,我还告诉过您要在任何获取数据的地方订阅获取数据。我不知道您对订阅的理解,根据我的说法,订阅是为了定期进行获取以获取更新。订阅本质上是异步的。

我给出一个简单的实现订阅的例子。

console.log("Started");
let subscription = false;
const getData = () => {
  // call your database and fetch the data and once
  // fetching done call the getData again

 // Think setTimeout as database call.
 // upon resolving the data I called it again
 // It neither stops other call back from running run
  setTimeout(() => {
    console.log("Fetching");
    if(subscription) {
      console.log("shuting");
      return;
    }
    getData();
  }, 1000);
}

getData();

setTimeout(() => {
  console.log("hello");
}, 5000);

setTimeout(() => {
  subscription = true;
}, 8000);