如果服务器端已有数据,则阻止 componentDidMount 获取数据

2024-03-04

ComponentDidMount() 在组件安装时触发,包括在服务器端渲染后进行水合时。

我在网上找到的解决方案之一是检查该州是否有数据;然而,这需要在每个组件上包含大量代码。还有哪些其他解决方案?

  componentDidMount() {
    // if rendered initially, we already have data from the server
    // but when navigated to in the client, we need to fetch
    if (!this.state.data) {
      this.constructor.fetchData(this.props.match).then(data => {
        this.setState({ data })
      })
    }
  }

我找到了替代解决方案。在我的 Redux 存储中,我保留当前页面的 URL。因此,在导航上,我能够执行以下操作:

componentDidMount() {
  const { url, match } = this.props;
  if (url !== match.url) {
    fetchData(match.path);
  }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如果服务器端已有数据,则阻止 componentDidMount 获取数据 的相关文章

随机推荐

  • Py_Initialize 运行需要哪些文件?

    我正在编写一段简单的代码 该代码从 C C 应用程序运行 Python 函数 为了做到这一点 我设置了 PYTHONPATH 并运行初始化 如下所示 Py SetPythonHome Python27 Py InitializeEx 0 然
  • 强制 R 不使用指数表示法(例如 e+10)?

    我可以强制 R 使用常规数字而不是使用e 10 类似符号 我有 1 810032e 09 and 4 在同一向量内并希望看到 1810032000 and 4 我正在为老式程序创建输出 我必须使用编写一个文本文件cat 到目前为止效果很好
  • java: Spring:如何将 bean 从一个 ClassPathXMLApplicationContext 传输到另一个?

    如何从一个豆子转移豆子ClassPathXMLApplicationContext到另一个 我创建一个这样的上下文 ClassPathXMLApplicationContext myOneContext new ClassPathXMLAp
  • 可展开列表视图自动折叠

    我无法在扩展新组时关闭之前扩展的组 我读过类似的问题 但我无法从中提取概念 我尝试使用 crashGroup groupPosition 方法 但它不起作用 您好 请尝试下面的代码 int lastExpandedGroupPosition
  • 关闭亮点

    我想关闭 PHPStorm 对非错误相关事物的烦人的突出显示 我读了他们的文档 其中说要转到首选项 gt 编辑器 gt 检查 我取消了 SQL 的所有选择 但我仍然无缘无故地得到绿色突出显示 我如何禁用此功能 这很让人分心 That s 语
  • 使用反射实例化内部类时出现 InstantiationException。为什么?

    我无法创建 B 对象 但为什么呢 public class AFactory public int currentRange private abstract class A protected final Object range cur
  • 线程 C++ 的瓶颈

    所以我只是想验证一下我的理解 希望你们能够消除任何误解 所以本质上我有两个线程使用相同的锁并在持有锁时执行计算 但有趣的是 在锁内我将导致线程休眠一小段时间 对于两个线程 每个线程的睡眠时间都会略有不同 由于锁的工作方式 较快的线程是否会因
  • 运行 GAE 开发服务器时,本地 MySQLdb 连接失败,并出现 paramstyle 的 AttributeError

    我正在使用 Flask Alchemy 针对 Cloud SQL 构建 GAE Flask 应用程序 并运行dev appserver在构建应用程序时对其进行测试 但是 如果我设置SQLALCHEMY DATABASE URI to a m
  • 通过蓝牙进行多点连接?

    我开始做广告 开始浏览 什么时候在同一个WiFi下 它可以工作 但是当我关闭 WiFi 时只留下蓝牙 甚至也不 void browser MCNearbyServiceBrowser browser foundPeer MCPeerID p
  • 如何使用 Google Drive API 将文件传输到其他用户的云端硬盘?

    我正在尝试转移当前属于我的 Google 文档 并将其移至另一个用户的 Google 云端硬盘的根目录 两个帐户都位于同一域中 我使用服务帐户来访问所有用户 起初我尝试通过修改权限来做到这一点 这将使第二个用户能够访问该文件 但不会将其放入
  • 如何使用“Matlab Data / Engine API for c++”在 C++ 中加载 .mat

    我正在尝试在 C 程序中包含 mat 然而 我无法使用传统的 mat h 由于 Matlab API for C 之间的内部兼容性问题 https de mathworks com help matlab matlab c api to r
  • 如何迭代 JavaScript 对象的属性名称?

    我想从 JavaScript 对象获取属性名称以动态构建表 例如 var obj fname joe lname smith number 34 for var i 0 i lt obj properties length i alert
  • 获取 std::list<>::iterator 的值到指针?

    我如何循环遍历 stl List 并存储其中一个对象的值以供稍后在函数中使用 Particle closestParticle for list
  • 从 php 调用 swi-prolog

    我正在尝试从 php 脚本中调用 swi prolog 例如 exec start plwin exe f C path load pl g run from file os1 print r os1 我可以看到 prolog 窗口打开并遵
  • 禁止 JavaScript/HTM 页面中的 ADO 安全警告

    我有一个功能齐全的网站存储在网络驱动器上 还有一个充当该网站数据库的 Access 数据库 由于缺乏服务器端代码 我被迫使用 JavaScript 创建 ADO ActiveX 对象来连接到数据库 这有效 我遇到的问题是 每当用户打开该站点
  • python 中的类的 Lambda 函数?

    一定有一种简单的方法可以做到这一点 但不知何故我可以解决它 我描述我想要的最好的方法是类的 lambda 函数 我有一个库需要一个类的未实例化版本作为参数来使用 然后它实例化该类本身以进行处理 问题是我希望能够动态创建该类的版本 以传递给库
  • 警告:preg_match() [function.preg-match]:编译失败:在偏移处没有可重复的内容

    我正在尝试将 preg match 检查从 url 检查更改为用户名检查 最小 最大 2 16 个字符 破折号 空格和连字符可以接受 我收到这个错误 Warning preg match function preg match 编译失败 在
  • 拦截Ajax请求?

    我试图拦截所有用普通 JavaScript 发出的 AJAX 请求 但我在 Stack Overflow 上发现的内容似乎不起作用 最简单的 我会说 功能性 代码如下 function open XMLHttpRequest prototy
  • 将自定义组件添加到 intelliJ 中的 FXML 场景构建器

    我想将自定义组件 自定义组件添加到 intelliJ 中的 javafx 场景生成器中 我目前使用的是java 8 1 我听说 java 10 可以向场景构建器添加组件 因为它有 java 2 0 我安装了java 10 但我不知道如何切换
  • 如果服务器端已有数据,则阻止 componentDidMount 获取数据

    ComponentDidMount 在组件安装时触发 包括在服务器端渲染后进行水合时 我在网上找到的解决方案之一是检查该州是否有数据 然而 这需要在每个组件上包含大量代码 还有哪些其他解决方案 componentDidMount if re