React フックはuseState
コンポーネントの状態を設定するために導入されています。しかし、以下のコードのようにフックを使用してコールバックを置き換えるにはどうすればよいでしょうか。
setState(
{ name: "Michael" },
() => console.log(this.state)
);
状態が更新された後に何かしたい。
追加の処理を実行するために使用できることはわかっていますが、ビット コードを必要とする状態の以前の値をチェックする必要があります。フックuseEffect
で使用できる簡単なソリューションを探しています。useState
ベストアンサー1
これを実現するにはフックを使用する必要がありますuseEffect
。
const [counter, setCounter] = useState(0);
const doSomething = () => {
setCounter(123);
}
useEffect(() => {
console.log('Do something after counter has changed', counter);
}, [counter]);
最初の初期レンダリング中にuseEffect
コールバックを無視したい場合は、それに応じてコードを変更します。
import React, { useEffect, useRef } from 'react';
const [counter, setCounter] = useState(0);
const didMount = useRef(false);
const doSomething = () => {
setCounter(123);
}
useEffect(() => {
// Return early, if this is the first render:
if ( !didMount.current ) {
return didMount.current = true;
}
// Paste code to be executed on subsequent renders:
console.log('Do something after counter has changed', counter);
}, [counter]);