reactjs - 在 React-Redux Web 应用程序上,我可以减少 Ajax 调用时间吗?
问题描述
3 个月以来,我一直在学习 React-Redux。真的 Redux 是一个非常好的主意。当我回顾 redux 时,我认为 Redux 似乎是一个定义为STORE的全局变量。所以在 React-Redux 应用程序中,每个组件、每个自定义钩子和其他都可以访问全局变量STORE来获取和设置。
通过这个想法,我相信我可以减少 Ajax 调用次数。例如,假设有 2 个页面,例如用户页面和房间页面。用户页面将显示用户列表,房间页面将显示每个房间的用户列表。
用户页面(一个 ajax 调用)
- #1。获取用户列表
房间页面(两个ajax调用)
- #1 获取用户列表
- #2 获取包含房间用户关系信息的房间列表
之前,每当加载页面(componentDidMount)时,我都会让用户页面和房间页面调用 ajax 来获取数据。但我只想用 Redux 调用一次 ajax。所以只有在第一次加载页面时,ajax 调用才会起作用。 我认为 Redux 是可能的,因为 Redux store 是作为一个全局变量工作的。
但我对这个想法有疑问。问题是数据同步。
假设有 2 个管理员用户(Admin#1,Admin#2)可以编辑服务器数据。
现在我使用Admin#1登录,并访问了用户页面和房间页面。所以用户数据和房间数据会保存在 Redux Store 中。之后,ajax 调用不再需要用户和房间数据。
但此时,Admin#2添加/删除了一些用户。
在这种情况下,Admin#1如何获取同步数据?
我认为 websocket 似乎是一个很好的解决方案。但是整个 web 应用程序的 websocket 功能非常困难。
那么我的问题的最佳解决方案是什么?
解决方案
我想你可以试试socketio。当客户端删除/添加新用户时,它将向其他客户端(webapp)广播事件。您只需要实现一个静态 socketIO 客户端并导出所有重要函数(还要考虑回调),以便您可以在组件中导入和使用它们
推荐阅读
- mysql - 我的 NodeJS+ Express + MySQL 应用程序没有在 Openshift 上运行
- rust - 在 Rust 中使用未知键访问 json 对象。有没有更简单的方法?
- python - Python 中的全局和局部范围变量;从循环内的数组中删除项目
- python - .bash_profile 和终端
- c++ - 删除字符串中具有相同值的任何“对”相邻字母
- java - 在一个类中 A ob = new B() 的含义是什么
- mysql - 分组方式不返回空值
- tcl - Tcl Eval ,但我不确定
- javascript - React.js + PHP/Apache:预检响应中的 Access-Control-Allow-Headers 不允许请求标头字段内容类型
- javascript - 对 :host CSS 伪类应用更深入的选择