Пример кода:
useEffect(() => {
//I want to know which was the variable which made the useffect run. var1 or var2. how can I?
}, [var1, var2]);
какая зависимость использовалась для запуска?
Самый простой способ добиться желаемого результата без сторонних библиотек и большого количества кода — разбить useEffect
на два useEffect
хука и один обработчик.
const handler = () => {
// ...some logic
};
useEffect(() => {
// var1 has been changed
handler();
}, [var1]);
useEffect(() => {
// var2 has been changed
handler();
}, [var2]);
Используйте useRef
, чтобы сохранить предыдущее состояние, а затем сравните результаты.
const prevVar1 = useRef();
const prevVar2 = useRef();
useEffect(() => {
if (prevVar1.current !== var1) {
// var1 has been changed
}
if (prevVar2.current !== var2) {
// var2 has been changed
}
// and update the previous state
prevVar1.current = var1;
prevVar2.current = var2;
// ...some logic
}, [var1, var1]);
Или используйте библиотеку use-what-changed