当有多个 React.js 组件实例具有数据请求时如何处理缓存
How to handle caching when having multiple React.js component instances with data requests?
我正在做一个项目,在同一页面上我有多个 React 组件。其中一些正在进行相同的Web服务调用
当我运行应用程序时,我发现此服务调用进行了两次甚至更多,具体取决于实例数
我想要的是进行一次调用并缓存它,每当任何组件需要此数据时,他们都可以从存储缓存中读取它。
我试图设置某种标志,无论是否获取数据,但由于所有实例都同时加载,它们都看到带有初始值的标志
法典:
在组件代码中,我有这个:
class WeightCharts extends React.Component {
componentWillMount() {
const Component = this;
this.state = {
weight: null
}
AppActions.getWeight();
}
请注意:AppActions.getWeight()
哪个是数据获取操作
因此,如果我有例如 3 个<WeightCharts />
实例,将进行 4 次调用
我提出的解决方案:
1-将此数据作为来自顶级组件的props传递,但随后该组件将严重依赖父组件
2-在组件中,我可能会尝试从存储中获取数据,如果存储未在缓存中找到数据,则应触发获取操作但据我了解,从商店触发操作是反模式
我的项目是一个开源项目,如果你想更深入地了解:
https://github.com/muhammad-saleh/weightlyio
多谢。
请看一下 https://github.com/facebook/dataloader
DataLoader 是一个通用实用程序,用作应用程序数据获取层的一部分,通过批处理和缓存在各种远程数据源(如数据库或 Web 服务)上提供简化且一致的 API。
相关文章:
- 可以't让我的if语句处理js中的html表单输入
- keyup事件处理程序更改焦点不适用于快速键入
- 如何使用jquery处理php循环通过元素
- angular.js没有'无法在PhoneGap中处理视图标记
- Webpack/Rect:遵循egghead.io教程,但出现错误:您可能需要一个合适的加载程序来处理此文件类型
- 提示使用服务器端事件处理程序激活JavaScript
- javascript:如何在antlr生成的Lexer中进行错误处理
- 如何编写一个具有公共标头的批处理
- 在同一个服务工作者中处理service-worker.js有任何影响吗
- 如何处理node.js节点mongodb中的连接和查询队列
- 通过命令行/批处理文件打开页面时,将javascript代码注入Google Chrome
- 如何处理10页以上的静态页眉/页脚
- 将事件处理程序绑定到任何可能的事件
- 通过ajax将坐标传递到php服务器端,并在处理后检索到javascript
- python到“;流“;字典处理
- 使用javascript进行实时图像处理
- 导入jQuery脚本获胜'我不处理html文件
- Javascript无法处理表单提交
- JavaScript 任务调度程序(批处理处理)
- RegEx在VBA和JavaScript中的处理方式有何不同?