【问题标题】:useEffect infinite loop even with empty array as dependencyuseEffect 无限循环,即使使用空数组作为依赖项
【发布时间】:2020-12-01 07:31:27
【问题描述】:

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

    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-native react-hooks use-effect


【解决方案1】:

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

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]);

【讨论】:

    猜你喜欢
    • 2022-09-24
    • 2021-07-25
    • 2020-11-02
    • 2021-09-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多