У меня есть основной компонент MainComp, который вызывает дочерний компонент ChildComp следующим образом:
<ChildComp data = {data}>
Это ЧайлдКомп:
export const ChildComp = (props: any) => {
console.info("#1");
const { value, loading, error } = useAsync(async (): Promise<any> => {
console.info("#2");
const response = await fetch(<some url>);
const data = await response.json();
return data;
}, []);
}
if (loading) {
// return
} else if (error) {
// return
}
return value;
Когда дочерний компонент вызывается изначально при загрузке страницы, все работает правильно. Однако при изменении свойств дочернего компонента компонент перезагружается, но хук useAsync не вызывается. В результате на консоли печатается номер 1, но не номер 2.
Любая идея, как я могу снова вызвать useAsync(), когда компонент перезагружается, потому что реквизиты меняются? URL-адрес внутри fetch изменяется в соответствии с передаваемыми реквизитами и, следовательно, должен вызываться каждый раз при изменении.
Спасибо за помощь!
Вам нужно указать правильные зависимости для хука useAsync()
:
const { value, loading, error } = useAsync(async (): Promise<any> => {
// ...
}, []); // <---- Indicate here the props/url upon which change you want to re-fetch data
Добавить URL-адрес в массив зависимостей?