Я пытаюсь понять useEffect
крюк всесторонне.
Я хотел бы знать, когда использовать какой метод и почему?
1.useEffect with no second paraments
useEffect(()=>{})
2.useEffect with second paraments as []
useEffect(()=>{},[])
3.useEffect with some arguments passed in the second parameter
useEffect(()=>{},[arg])
javascript
reactjs
react-redux
Джонни
источник
источник
Ответы:
Работает на каждом компоненте рендера.
Обычно используется для отладки, аналогично выполнению тела функции при каждом рендеринге:
Запускается один раз на компонентном монтировании.
Обычно используется для инициализации состояния компонентов путем выборки данных и т. Д.
Запускается на изменение в
arg
стоимости.«При изменении» относится к поверхностному сравнению с предыдущим значением
arg
(сравнивает значениеarg
предыдущего и текущего рендерингаprevArg === arg ? Do nothing : callback()
).Обычно используется для запуска событий на реквизит / изменение состояния.
useEffect
Дана АбрамоваuseEffect
API .источник
Если вы знакомы с методами жизненного цикла класса React, вы можете думать о useEffect Hook как о компонентах componentDidMount, componentDidUpdate и componentWillUnmount вместе.
1.useEffect без вторых параграфов: используется, когда мы хотим, чтобы что-то произошло, когда компонент только что смонтирован, или если он был обновлен. Концептуально, мы хотим, чтобы это происходило после каждого рендера.
2.useEffect со вторыми параграфами как []: используется, когда мы хотим, чтобы что-то происходило во время монтирования компонента, если оно выполняется только один раз во время монтирования. Оно ближе к знакомым componentDidMount и componentWillUnmount.
3.useEffect с некоторыми аргументами, передаваемыми во втором параметре: используется, когда мы хотим, чтобы что-то произошло во время передачи программы, например. Аргументы изменились в вашем случае.
Для получения дополнительной информации. проверьте здесь: https://reactjs.org/docs/hooks-effect.html
источник
3.useEffect с некоторыми аргументами, передаваемыми во втором параметре useEffect (() => {}, [arg])
сначала он запустится, затем снова запустится при изменении аргумента
Вы также забыли спросить насчет возврата внутри useEffect ... Он использует для очистки, он будет работать, когда компонент демонтируется
источник