4 回答

TA贡献1793条经验 获得超6个赞
每当您更改状态时,就会触发重新渲染。
在你的情况下,当你调用setCount并且count状态count正在改变并且它正在触发重新渲染并且这个循环继续时。这就是这个错误的原因。
尝试这个示例,其中setCount仅调用一次并且值按预期更改。
import React, { useState, useEffect } from "react";
function App() {
const [count, setCount] = useState(0);
useEffect(() => {
setCount(count + 1);
}, []);
return (
<div>
<p>value of count : {count} fois</p>
</div>
);
}
export default App;
这是另一个示例,count每次按下按钮时 都会增加:
import React, { useState, useEffect } from "react";
function App() {
const [count, setCount] = useState(0);
useEffect(() => {
setCount(count + 1);
}, []);
return (
<div>
<p>value of count : {count} fois</p>
<button
onClick={() => {
setCount(count + 1);
}}
>
Increase
</button>
</div>
);
}
export default App;

TA贡献1798条经验 获得超3个赞
你正在创建一个无限循环。每次状态更新时,组件都会重新渲染。组件正在渲染,然后调用setCount
状态更新,然后组件渲染,如此循环下去。
您可以useEffect
在第一次渲染后更新状态。
useEffect(() => { setCount(count + 1) },[])
我不确定这有什么意义,因为你可以将初始值传递给useState

TA贡献1752条经验 获得超4个赞
您收到错误的原因是调用setCount(count + 1);
将永远增加状态计数。尝试将其放在一个条件上,例如在下面的codesandbox /代码中,每次单击按钮时状态计数都会增加1。if (count < 10)
您还可以在某种条件下setInterval
或在多种条件下增加 state 。只是不是无限!;)
import React, { useState } from "react";
import "./styles.css";
export default function App() {
const [count, setCount] = useState(0);
const increaseCount = () => {
setCount(count + 1);
};
return (
<div>
<p>value of count : {count} fois</p>
<button onClick={increaseCount}>start count</button>
</div>
);
}

TA贡献1847条经验 获得超11个赞
您正在调用setCount
组件的主体,如果考虑基于类的组件,则本质上是渲染函数。因此,它会导致设置新值、重新渲染、设置新值、重新渲染等等的无限循环。
setCount
您应该只从某种事件中调用,例如按钮单击或效果,例如使用useEffect
添加回答
举报