每当我通过零食运行我的应用程序时,我都会收到此错误:React Hook useEffect 有一个不必要的依赖项:Navigator。排除它或删除依赖项数组。像“Navigator”这样的外部范围值不是有效的依赖项,因为改变它们不会重新渲染组件。 (反应钩子/详尽的依赖)
我尝试在网上寻找修复程序并尝试重新安装一些软件包,但没有任何效果。
与错误相关的代码在这里:
export default function App() {
const [image, setImage] = useState(null);
useEffect(() => {
if (image != null){
const formData = new FormData();
formData.append('image', {
uri: image,
name: 'image.jpg',
type: 'image/jpeg',
});
fetch('http://192.168.1.75:8000/classify', {
method: 'POST',
body: formData,
headers: {
'Content-Type': 'multipart/form-data',
},
})
.then((response) => response.json())
.then((data) => {
Navigator.navigate('Detail', { disease: data });
})
.catch((error) => {
console.error(error);
});
}
}, [image, Navigator])
我尝试重新安装软件包,但没有成功。 我尝试通过手机运行它,但这也不起作用 我尝试一点点删除代码,但仍然会导致错误
嘿:) useEffect 挂钩应该只包含效果本身使用的依赖项。 Navigator 变量不应包含在依赖项数组中,因为它是一个全局对象,更改它不会导致组件重新渲染。
要解决这个问题,可以从依赖数组中删除Navigator:
useEffect(() => {
if (image != null) {
const formData = new FormData();
formData.append('image', {
uri: image,
name: 'image.jpg',
type: 'image/jpeg',
});
fetch('http://192.168.1.75:8000/classify', {
method: 'POST',
body: formData,
headers: {
'Content-Type': 'multipart/form-data',
},
})
.then((response) => response.json())
.then((data) => {
Navigator.navigate('Detail', { disease: data });
})
.catch((error) => {
console.error(error);
});
}
}, [image]);