😸學習多次更新同一個狀態
😸會一直更新同個狀態的就先想到計數器了,來簡單實作一下
+3
的按鈕後,上面的數字一次就要以 3、6、9 這樣的方式以此類推的顯示import { useState } from "react";
import "./styles.css";
export default function Counter() {
const [number, setNumber] = useState(0);
return (
<>
<h1>React 大秘境 DAY 10</h1>
<h2>{number}</h2>
<button onClick={() => {
setNumber(number + 1);
setNumber(number + 1);
setNumber(number + 1);
}}>+3</button>
</>
)
}
😸這邊我們要實現,在下一次畫面重新渲染前多次更新相同的狀態值時
需要以setNumber(n => n + 1)
方式處理
那我們來改寫上面的範例
import { useState } from "react";
import "./styles.css";
export default function Counter() {
const [number, setNumber] = useState(0);
return (
<>
<h1>React 大秘境 DAY 10</h1>
<h2>{number}</h2>
<button
onClick={() => {
setNumber(n => n + 1);
setNumber(n => n + 1);
setNumber(n => n + 1);
}}
>
+3
</button>
</>
);
}
setNumber(n => n + 1);
是一個 function ,他會保留 n 的值並且會把 n 傳遞給下一組更新器使用setNumber(number + 7);
再來 setNumber(n => n + 1);
import { useState } from "react";
import "./styles.css";
export default function Counter() {
const [number, setNumber] = useState(0);
return (
<>
<h1>React 大秘境 DAY 10</h1>
<h2>{number}</h2>
<button
onClick={() => {
setNumber(number + 7);
setNumber(n => n + 1);
}}
>
+3
</button>
</>
);
}
😸猜對了嗎?這邊的更新值就是一次變成 8
😸小知識,這邊的更新器命名方式,通常會使用狀態變數的第一個字母來命名