Привет, у меня проблема с хуком useEffect
в React. Приведенный ниже код работает так, как должен, но es-lint предполагает, что мне нужно предоставить зависимости в массиве зависимостей из useEffect
.
Рабочий код с // eslint-disable-next-line react-hooks/exhaustive-deps
export default function UsersList() {
const [users, setUsers] = useState<User[]>([]);
const { setError } = useContext(errorContext);
const { isLoading, setIsLoading } = useContext(globalContext);
useEffect(() => {
if (users.length < 1) {
fetchUsers();
}
// eslint-disable-next-line react-hooks/exhaustive-deps
}, []);
async function fetchUsers () {
try {
setIsLoading(true);
const fetchedUsers = await api.getUsers();
setUsers(fetchedUsers);
} catch (error) {
setError(error);
} finally {
setIsLoading(false);
}
}
}
Infinite код цикла
Я попытался написать его вот так: код запускает бесконечное l oop .. (потому что состояния постоянно меняются внутри функции и каждый раз запускает useEffect
из-за объявленных зависимостей)
useEffect(() => {
async function fetchUsers () {
try {
setIsLoading(true);
const fetchedUsers = await api.getUsers();
setUsers(fetchedUsers);
} catch (error) {
setError(error);
} finally {
setIsLoading(false);
}
}
if (users.length < 1) {
fetchUsers();
}
}, [setIsLoading, setError, users]);
Я также попытался поместить fetchUsers()
в массив зависимостей, но это не помогло.
Как правильно настроить вызов asyn c, когда компонент монтируется без необходимо использовать // eslint-disable-next-line react-hooks/exhaustive-deps
?