useEffect()
- это реагирующая перехват для функциональных компонентов, которая охватывает функциональные возможности перехватчиков жизненного цикла компонентов класса. useEffect()
объединяет componentDidMount(), componentDidUpdate()
и componentWillUnmount()
компонентов класса, что означает, что он будет выполняться при монтировании компонента, при изменении состояния компонента и при отключении компонента из DOM.
Проверьте ниже пример,
useEffect(() => {
setTimeout(() => {
alert("data saved");
}, 1000);
});
Выше код / предупреждение выполняется, когда компонент смонтирован / начальный рендеринг, когда состояние компонента изменяется и когда компонент размонтирован из DOM.
Чтобы приведенный выше код выполнялся реже, мы можем передать массив значений в качестве второго аргумента в качестве зависимостей для этого эффекта. Если одна из зависимостей изменилась, эффект снова запустится.
Предположим, у нас есть массив Людей, переданный в подпорки функционального компонента, и мы хотим, чтобы оповещение выполнялось только при изменении массива Людей.
useEffect(() => {
setTimeout(() => {
alert("data saved");
}, 1000);
}, [props.persons]);
Это выполнит код во время начального рендеринга и при изменении props.persons
.
Таким образом, чтобы выполнить код только во время первоначального рендеринга / монтирования компонента, вы можете передать пустой массив, что означает отсутствие зависимостей, указанных при выполнении эффекта. Следовательно, выполняется во время первоначального рендеринга и при размонтировании компонента.
useEffect(() => {
setTimeout(() => {
alert("data saved");
}, 1000);
}, []);
Вы можете изменить свой useEffect()
хук, как показано ниже, чтобы вызывать его только один раз для получения данных API,
useEffect(() => {
loadMessages();
}, []);