useState prev
1つの関数で1つのreact-hookのusStateを複数回使用すると、結果が望ましくないという問題が発生する可能性があります.
以下、カウント値を順番に1、3、5、7上げて、最後にボタンを押して、16のコードを上げたいです.
受信したcount値は+1,+3,+5の値ではなく,初期状態0から受信した値であるからである.
そこでこれを防ぐためにprevという機能を使いました.
下図のように、コードを使用して16が正常に上昇していることを確認します.
以下、カウント値を順番に1、3、5、7上げて、最後にボタンを押して、16のコードを上げたいです.
import { useState } from "react";
export default function StatePrevPage() {
const [count, setCount] = useState(0);
const onClickCount = () => {
setCount(count + 1);
setCount(count + 3);
setCount(count + 5);
setCount(count + 7);
};
return (
<div>
<div>Count:{count}</div>
<button onClick={onClickCount}>Count Up</button>
</div>
);
}
しかし実際に起動すると、16ではなく7です.受信したcount値は+1,+3,+5の値ではなく,初期状態0から受信した値であるからである.
そこでこれを防ぐためにprevという機能を使いました.
下図のように、コードを使用して16が正常に上昇していることを確認します.
import { useState } from "react";
export default function StatePrevPage() {
const [count, setCount] = useState(0);
const onClickCount = () => {
setCount((prev) => prev + 1);
setCount((prev) => prev + 1);
setCount((prev) => prev + 1);
setCount((prev) => prev + 1);
setCount((prev) => prev + 1);
};
return (
<div>
<div>Count:{count}</div>
<button onClick={onClickCount}>Count Up</button>
</div>
);
}
Reference
この問題について(useState prev), 我々は、より多くの情報をここで見つけました https://velog.io/@ssjjyy/useState-prevテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol