我正在使用react钩子来获取数据,但它似乎并没有停止。
我已经阅读了文档,并提到如果将[]添加为useEffect的第二个参数,它将具有零依赖性,因此只能被调用一次。我已经这样做了,但是它并没有改变情况,并且在打印时,调用函数被多次调用。是虫子吗?
useEffect(() => {
props.fetchSounds();
}, []);
export const fetchSounds = () => {
console.log("I am being called");
return dispatch => {
fetch("http://localhost:4000/sounds")
.then(response => response.json())
.then(response => {
dispatch({
type: ActionTypes.FETCH_SOUNDS,
payload: response.data
});
})
.catch(err => console.error(err));
};
};
编辑:该组件仅使用一次。
编辑:我已经尝试了各种与钩子相关的事情,但是没有一个可以阻止fetch函数被调用。喜欢
让声音成为依赖:
useEffect(() => {
props.fetchSounds();
}, [props.sounds]);
让虚拟const作为依赖项:
const a = 5;
useEffect(() => {
props.fetchSounds();
}, [a]);
即使没有useEffect,也只需致电
props.fetchSounds()
在功能组件内部一次。事实证明,所有这些调用函数都被调用了无数次。