Với React 16.8.6 (phiên bản 16.8.3 trước đó rất tốt), tôi gặp lỗi này khi cố gắng ngăn chặn một vòng lặp vô hạn trong yêu cầu tìm nạp
./src/components/BusinessesList.js
Line 51: React Hook useEffect has a missing dependency: 'fetchBusinesses'.
Either include it or remove the dependency array react-hooks/exhaustive-deps
Tôi đã không thể tìm ra giải pháp ngăn chặn vòng lặp vô hạn. Tôi muốn tránh xa việc sử dụng useReducer()
. Tôi đã tìm thấy cuộc thảo luận này https://github.com/facebook/react/issues/14920 trong đó một giải pháp khả thi là You can always // eslint-disable-next-line react-hooks/exhaustive-deps if you think you know what you're doing.
tôi không tự tin vào những gì tôi đang làm nên tôi chưa thử thực hiện nó.
Tôi có thiết lập hiện tại này React hook useEffect chạy liên tục mãi mãi / vòng lặp vô hạn và nhận xét duy nhất là về useCallback()
điều mà tôi không quen thuộc.
Cách tôi hiện đang sử dụng useEffect()
(mà tôi chỉ muốn chạy một lần khi bắt đầu tương tự componentDidMount()
)
useEffect(() => {
fetchBusinesses();
}, []);
const fetchBusinesses = () => {
return fetch("theURL", {method: "GET"}
)
.then(res => normalizeResponseErrors(res))
.then(res => {
return res.json();
})
.then(rcvdBusinesses => {
// some stuff
})
.catch(err => {
// some error handling
});
};
useCallback()
. Vì vậy, ví dụ:const fetchBusinesses= useCallback(() => { ... }, [...])
vàuseEffect()
sẽ trông như thế này:useEffect(() => { fetchBusinesses(); }, [fetchBusinesses]);