reactjs - 错误 : Too many re-renders. React 限制渲染次数以防止无限循环。 react js

标签 reactjs use-state

我目前正在学习 react ,但我有这个错误

Error: Too many re-renders. React limits the number of renders to prevent an infinite loop.

这是代码

    const [Status, setStatus] = useState(false);
    if (sessionStorage.getItem("token")) {
        setStatus(true);
    }```

最佳答案

您在渲染组件时正在进行状态更改。通过进行状态更改,您将触发新的渲染,因此您将创建一个渲染循环。

您必须使用 useEffect Hook 才能在首次加载时将本地状态设置为 token 值。这是文档:

https://reactjs.org/docs/hooks-effect.html

在您的情况下,您必须更换:

if (sessionStorage.getItem("token")) {
     setStatus(true);
}

通过:

useEffect(() => {
   if (sessionStorage.getItem("token")) {
       setStatus(true);
   }
}, [])

如果您只想在第一次渲染组件时触发它,您可以将依赖项数组保留为空,或者为其提供依赖项,如果它们发生更改将再次触发 useEffect

关于reactjs - 错误 : Too many re-renders. React 限制渲染次数以防止无限循环。 react js,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70242172/

相关文章:

reactjs - 由于 useState 而导致 React Native 中的无限循环

javascript - 如何在 useState Hook 中将字符串转换为数字?

javascript - React - 在没有引用的情况下点击获取div的文本

javascript - 带有 useState 钩子(Hook)的 React 功能组件立即执行函数

javascript - 如何将我的状态对象放入二维数组中?

reactjs - useState 钩子(Hook)一次只能设置一个对象,并将同一个数组的另一个对象返回到初始状态

arrays - useState hook 的 'setState' 一次调用出现两次

node.js - React Redux - 将多个存储增强器传递给 createStore() 时出错

javascript - 在 React 中为大量元素添加事件监听器

javascript - 如何在 React 钩子(Hook)中附加到状态数组?