我是javascript和react钩子的新手,并且我一直收到以下代码的“重新渲染次数太多”的错误
const [showReminder, setShowReminder] = useState(
lastDismissedDate.diff(overrideDate, 'days') >= 0,
);
if (latestIndexScore && !hasCompletedIndexRecently(latestIndexScore.date)) {
setShowReminder(true);
}有没有办法把这两句话合并成一句话。就像这样
const [showReminder, setShowReminder] = useState(
latestIndexScore && !hasCompletedIndexRecently(latestIndexScore.date) || lastDismissedDate.diff(overrideDate, 'days') >= 0,
);发布于 2020-01-09 14:24:09
if (latestIndexScore && !hasCompletedIndexRecently(latestIndexScore.date))
{
setShowReminder(true);
}在上面的代码中,如果条件为真,那么setShowReminder将运行,或者将在react中更改其状态。如果状态更改,它将再次呈现,因此代码将再次运行( if语句),然后setShowReminder将再次运行,并再次更改状态...这会导致过多的重新渲染
尝试使用useEffect挂钩并将数组作为第二个参数传递给useEffect,如下所示
const [showReminder, setShowReminder] = useState(false);
useEffect(() => {
setShowReminder(!showReminder);
}, [toggle]); // Only re-run the effect if toggle changeshttps://stackoverflow.com/questions/59117387
复制相似问题