使用react useState和useEffect进行内存泄漏

时间:2020-10-31 02:09:49

标签: javascript reactjs react-hooks

我正在创建一个组件,该组件将从api中连续获取数据

(在实际使用中,响应会花费一些时间,因此不会一直被调用)

所以我创建了这个自定义钩子来做

export const callUpdateApi = (url) => {
  const [state, setState] = useState({ data: null, loading: true });

useEffect(() => {
  setState(state => ({ data: state.data, loading: true }));
  axios.get(url)
    .then(x => {
      return x.data
    } , err => {
        console.log('CALL UPDATE API ERROR ')
        // timer to try again later if request fail
        setTimeout(function(){
          console.log('err status', err);
          setState({...state , data: null})
      } , 3000)
    } )
    .then(y => {
      setState({ data: y, loading: false });
    });
}, [state.data]);

return state;    
};

然后,如果我这样称呼,随着时间的推移,内存使用量将会增加。

如果我设置为使我的api快速响应,那么几分钟内我的内存就快满了

0 个答案:

没有答案