添加空的依赖项数组后,React钩子useEffect不会停止获取

时间:2019-07-22 17:59:27

标签: javascript reactjs

我正在使用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()

在功能组件内部一次。事实证明,所有这些调用函数都被调用了无数次。

0 个答案:

没有答案