ComponentDidUpdate 使用情况和最大更新深度超出

2024-04-19

我有一个设置屏幕,我可以从用户那里获取一些信息,例如年龄、体重和性别,在获得这些信息后,我计算用户每天应该喝多少水。

我想自动计算这个金额,而不需要任何计算按钮。

不变违规:超出最大更新深度。当组件在 componentWillUpdate 或 componentDidUpdate 中重复调用 setState 时,可能会发生这种情况。 React 限制嵌套更新的数量以防止无限循环。

我当前计算水量的代码

  //function to calculate how much water to drink
  waterCalculator = () => {
    //let weightPound = this.state.weight * 2.2046;
    let weightValue = this.state.weight;
    let ageValue = this.state.age;
    let waterAmount = null;
    if (ageValue < 30) {
      waterAmount = weightValue * 40;
    } else if (ageValue >= 30 || ageValue <= 55) {
      waterAmount = weightValue * 35;
    } else {
      waterAmount = weightValue * 30;
    }
    this.setState({ sliderValue: waterAmount });
  };

这就是我想要自动更新我的水量的方式

  //checking if age and weight and gender states are changed call the function
   componentDidUpdate(prevState) {
     if (
       this.state.age !== prevState.age &&
       this.state.weight !== prevState.weight &&
       this.state.gender !== prevState.gender
     ) {
       this.waterCalculator();
     }
   }

componentDidUpdate(prevState) { // <===Error

}

问题在于第一个参数componentDidUpdate is prevProps not prevState

解决问题

componentDidUpdate(prevProps, prevState) {
  ...
}

只需放置prevState进入第二个参数

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

ComponentDidUpdate 使用情况和最大更新深度超出 的相关文章

随机推荐

  • 如何在 AngularJS 和 HTML 中制作滴答作响的时钟(时间)

    我是一名 AngularJS html 初学者用户 一直在尝试寻找代码片段来为网络应用程序制作时钟 时间项目 网络搜索并没有像我期望的那样容易地提供直接的结果 所以我想我应该发布这个问题来获得一些答案 也让其他人更容易找到这个问题 我已经发
  • 循环遍历 NSAttributedString 属性以增加字体大小

    我需要的只是循环遍历所有属性NSAttributedString并增加字体大小 到目前为止 我已成功循环并操作属性 但无法保存回NSAttributedString 我注释掉的行对我不起作用 怎么救回来 NSAttributedString
  • 发布到 Azure 失败,出现“无法识别的链接扩展‘contentLibExtension’”错误

    我正在尝试使用 Visual Studio 2015 CTP 将 ASP NET MVC 6 应用程序发布到 Azure 并收到以下错误 Publishing with publish method MSDeploy Calling msd
  • ASyncTasks 阻塞其他任务

    我有 2 个 ASyncTasks 一个从 httpPost 检索值 另一个更新 UI 的一些元素 包括列表视图 问题是 由于两个 ASyncTasks 共享相同的后台线程 如果网络操作首先启动并且运行缓慢 由于网络连接不良 其他后台线程花
  • 获取 IndexError:字符串索引超出范围

    我不知道为什么我会得到一个 IndexError 字符串索引超出范围 用这个代码 s oobbobobo a 0 for b in range len s 1 if s b b and s b 1 o and s b 2 s b a 1 e
  • iPhone 的文本转语音库 [重复]

    这个问题在这里已经有答案了 可能的重复 iPhone 上的文字转语音 https stackoverflow com questions 416064 text to speech on iphone 如何开始进行文本到语音转换iPhone
  • Ansible 手册:错误! “command”不是 Play 的有效属性[重复]

    这个问题在这里已经有答案了 我只是想写一个基本的剧本 并不断收到下面的错误 尝试了很多东西但仍然无法做到正确 我知道这一定是语法问题 但不知道在哪里 这是我的代码 This playbook runs a basic DF command
  • 使用PHP函数发送邮件时中继不允许的消息

    我正在使用 wamp 服务器并尝试使用 PHP 函数发送电子邮件mail email protected cdn cgi l email protection my subject my body 具有以下设置php ini SMTP IS
  • Cookie 是否可以保护令牌免受 XSS 攻击? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我正在为基于浏览器的 Javascript Web 应用程序构建基于 JWT JSON Web 令牌 的身份验证机制 使用无状态服务器
  • AngularJS 中 $routeChangeStart 的 Jasmine 单元测试用例

    嗨 我正在使用构建一个应用程序AngularJS现在我开始对我的应用程序进行单元测试 我知道如何为服务 控制器等编写单元测试用例 但我不知道如何编写它 routeChangeStart 我的 app js 中有以下代码 app run fu
  • 如何将单词和向量手动添加到Word2vec gensim?

    比方说 word2vec模型是我训练过的 word2vec 模型 当词汇表之外的单词 oov word 发生时 我计算一个向量vec using 计算向量 oov word 方法 现在 我想添加 追加oov word及其对应的向量vec到我
  • 当文件更改时,我可以让 docker-compose 重新启动容器吗?

    Docker compose 很好用docker composer up d将重新启动所有容器docker compose yml已经改变 但是 如果我更改了 它就不会拾取traefik toml我的容器之一需要在启动时读取 是否可以有do
  • Azure 上云服务的静态 IP [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我有一个Cloud Service具有工人角色 云服务设置为可扩展到 5 个实例 有一项操作需要从 Azure 到我们的数据中心进行通信
  • 在字符数组中包含 char 的十进制等效项

    如何使用字符的十进制 十六进制表示形式而不是实际字符创建字符数组 我问的原因是因为我正在编写 C 代码 并且我需要创建一个包含英语中未使用的字符的字符串 然后该字符串将被解析并显示到 LCD 屏幕上 例如 0 解码为 0 n 解码为 10
  • 在 bootstrap 模式中使用 ajax 加载内容

    我正在尝试使用 ajax 让我的引导模式检索数据 a href img src alt Birthdays height 120 width 109 a 我的模式 div class modal hide div
  • 何时使用 ErrorException 与 Exception?

    PHP 5 1引入了错误异常 http php net manual en class errorexception php 两个函数的构造函数不同 public construct string message int code 0 Ex
  • node-gyp 配置得到“gyp ERR!找到 VS”

    我正在尝试开始有关节点 c c 附加组件 这node gyp命令出错 我已经安装了vs2019 我的命令是 node gyp configure msvs version 2019 详细输出是 gyp info it worked if i
  • @Override 注解的问题

    我正在制作一个类似于 Banko 小程序的 Java 应用程序 当我点击 public void init 方法时 我进展顺利 当我完成后 除此之外的所有内容都已编译完毕 它告诉我添加 Override 注释 我尝试过 但每当我这样做时 无
  • 如何在 Android 中创建 https 连接?

    我在 Stackoverflow 中找到了很多帖子 但无法找到适用的解决方案 如何在 Android 中创建 https 连接 代码是 HttpParams httpParameters new BasicHttpParams ConnMa
  • ComponentDidUpdate 使用情况和最大更新深度超出

    我有一个设置屏幕 我可以从用户那里获取一些信息 例如年龄 体重和性别 在获得这些信息后 我计算用户每天应该喝多少水 我想自动计算这个金额 而不需要任何计算按钮 不变违规 超出最大更新深度 当组件在 componentWillUpdate 或