Я написал ловушку обычного, чтобы предотвратить любые неиспользуемые обновления в данных, которые используют с ними useEffect (например, когда я отправляю объект в зависимостях useEffect, которые вызывают срабатывание useEffect каждый раз или при отправке объекта в useEffect, кроме слоистых данных) in объект был изменен, но useEffect не может их обнаружить и ничего не делать)
export const useUpdateEffect = (callback, dependencies) => {
const previousDeps = useRef(null);
useEffect(() => {
const haveChange = JSON.stringify(dependencies) === JSON.stringify(previousDeps.current)
if (haveChange) return;
const returnCallback = callback(previousDeps.current);
return () => {
if (typeIs(returnCallback, "Function")) {
returnCallback();
}
previousDeps.current = dependencies;
}
}, [callback, dependencies])
}
Если вы видите, что этот хук выполняет свою работу, когда dependencies
было изменено (с любым слоем). также этот хук сохраняет depenedencies
и использует их для сравнения с текущим. (как componentDidUpdate).
, но проблема в этом коде заключается в том, что, когда я пытаюсь отправить чистый метод с возвратом. вызов метода clean сразу после того, как тело useEffect работает.
Мне нужно знать, в чем проблема этого хука. чтобы увидеть проблему, попробуйте следующий код с useUpdateEffect
и посмотрите, что я имею в виду. { ссылка }