4 回答

TA貢獻1793條經(jīng)驗 獲得超6個贊
每當您更改狀態(tài)時,就會觸發(fā)重新渲染。
在你的情況下,當你調(diào)用setCount并且count狀態(tài)count正在改變并且它正在觸發(fā)重新渲染并且這個循環(huán)繼續(xù)時。這就是這個錯誤的原因。
嘗試這個示例,其中setCount僅調(diào)用一次并且值按預期更改。
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條經(jīng)驗 獲得超3個贊
你正在創(chuàng)建一個無限循環(huán)。每次狀態(tài)更新時,組件都會重新渲染。組件正在渲染,然后調(diào)用setCount
狀態(tài)更新,然后組件渲染,如此循環(huán)下去。
您可以useEffect
在第一次渲染后更新狀態(tài)。
useEffect(() => { setCount(count + 1) },[])
我不確定這有什么意義,因為你可以將初始值傳遞給useState

TA貢獻1752條經(jīng)驗 獲得超4個贊
您收到錯誤的原因是調(diào)用setCount(count + 1);
將永遠增加狀態(tài)計數(shù)。嘗試將其放在一個條件上,例如在下面的codesandbox /代碼中,每次單擊按鈕時狀態(tài)計數(shù)都會增加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條經(jīng)驗 獲得超11個贊
您正在調(diào)用setCount
組件的主體,如果考慮基于類的組件,則本質(zhì)上是渲染函數(shù)。因此,它會導致設置新值、重新渲染、設置新值、重新渲染等等的無限循環(huán)。
setCount
您應該只從某種事件中調(diào)用,例如按鈕單擊或效果,例如使用useEffect
添加回答
舉報