首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >React Hooks -重新渲染过多

React Hooks -重新渲染过多
EN

Stack Overflow用户
提问于 2019-11-30 23:05:56
回答 1查看 123关注 0票数 0

我是javascript和react钩子的新手,并且我一直收到以下代码的“重新渲染次数太多”的错误

代码语言:javascript
复制
const [showReminder, setShowReminder] = useState(
    lastDismissedDate.diff(overrideDate, 'days') >= 0,
  );

  if (latestIndexScore && !hasCompletedIndexRecently(latestIndexScore.date)) {
    setShowReminder(true);
  }

有没有办法把这两句话合并成一句话。就像这样

代码语言:javascript
复制
const [showReminder, setShowReminder] = useState(
    latestIndexScore && !hasCompletedIndexRecently(latestIndexScore.date) || lastDismissedDate.diff(overrideDate, 'days') >= 0,
  );
EN

回答 1

Stack Overflow用户

发布于 2020-01-09 14:24:09

代码语言:javascript
复制
          if (latestIndexScore && !hasCompletedIndexRecently(latestIndexScore.date)) 
          {
            setShowReminder(true);
          }

在上面的代码中,如果条件为真,那么setShowReminder将运行,或者将在react中更改其状态。如果状态更改,它将再次呈现,因此代码将再次运行( if语句),然后setShowReminder将再次运行,并再次更改状态...这会导致过多的重新渲染

尝试使用useEffect挂钩并将数组作为第二个参数传递给useEffect,如下所示

代码语言:javascript
复制
            const [showReminder, setShowReminder] = useState(false);

            useEffect(() => {
               setShowReminder(!showReminder);
            }, [toggle]); // Only re-run the effect if toggle changes
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59117387

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档