useConditionalEffect
useConditionalEffect は、条件を判定する関数に基づいてエフェクトを実行する React フックです。 依存関係の変化だけでなく、より細かくエフェクトの実行タイミングを制御できます。
インターフェース
ts
function useConditionalEffect<T extends DependencyList>(
effect: EffectCallback,
deps: DependencyList,
condition: (prevDeps: T | undefined, currentDeps: T) => boolean
): void;パラメータ
- effectrequired · EffectCallback
実行するエフェクトのコールバック。
- depsrequired · DependencyList
useEffect と同様の依存配列。
- conditionrequired · (prevDeps: T | undefined, currentDeps: T) => boolean
前回と現在の依存配列に基づいて、エフェクトを実行するかどうかを決める関数です。
- 初回レンダリングでは、prevDepsはundefinedになります。condition関数では、この場合を扱う必要があります。
- 初回レンダリングでエフェクトを実行するには、prevDepsがundefinedのときにtrueを返します。
- 初回レンダリングでエフェクトを実行しない場合は、prevDepsがundefinedのときにfalseを返します。
戻り値
この関数は値を返しません。
使用例
tsx
import { useConditionalEffect } from 'react-simplikit';
function Component() {
const [count, setCount] = useState(0);
// count が増えた場合にのみエフェクトを実行します
useConditionalEffect(
() => {
console.log(`Count increased to ${count}`);
},
[count],
(prevDeps, currentDeps) => {
// count が定義されていて、値が増えた場合にのみ実行します
return prevDeps && currentDeps[0] > prevDeps[0];
}
);
return (
<button onClick={() => setCount(prev => prev + 1)}>
Increment: {count}
</button>
);
}