React Hook “useEffect” is called conditionally

后端 未结 4 2221
再見小時候
再見小時候 2020-12-15 04:53

React is complaining about code below, saying it useEffect is being called conditionally:

4条回答
  •  太阳男子
    2020-12-15 05:04

    Your code, after an if statement that contains return, is equivalent to an else branch:

    if(!firebase.getCurrentUsername()) {
        ...
        return null
    } else {
        useEffect(...)
        ...
    }
    

    Which means that it's executed conditionally (only when the return is NOT executed).

    To fix:

    useEffect(() => {
      if(firebase.getCurrentUsername()) {
        firebase.getCurrentUserQuote().then(setQuote)
      }
    }, [firebase.getCurrentUsername(), firebase.getCurrentUserQuote()])
    
    if(!firebase.getCurrentUsername()) {
      ...
      return null
    }
    

提交回复
热议问题