首页 > 解决方案 > useEffect 无限循环,即使使用空数组作为依赖项

问题描述

我正在运行下面的代码,但它会导致组件中的无限重新渲染。超级奇怪

    const dispatch = useDispatch()
    const token = useSelector(state => state.token)
    
    const getUser = async () => {
            try {
              const response = await baseUrl.get('/users/getUser', {
                headers: {
                  authorization: token
                }
              })
              dispatch(SET_USER(response.data.user))
            } catch (error) {
              Alert.alert(error.response.data.message)
            }
          }
          
    useEffect(()=>{
       getUser()
    },[])

标签: react-nativereact-hooksuse-effect

解决方案


可能是你缺少一些依赖,尝试为 useEffect 添加依赖,然后用 useCallback 包装 getuser,并为 useCallback 钩子添加依赖。

const getUser = useCallback(async () => {
      try {
              const response = await baseUrl.get('/users/getUser', {
                headers: {
                  authorization: token
                }
              })
              dispatch(SET_USER(response.data.user))
            } catch (error) {
              Alert.alert(error.response.data.message)
            }
  },[dispatch, SET_USER]);

  useEffect(() => {
    getUser();
  }, [getUser]);

推荐阅读