useEffect有问题吗?

时间:2020-09-18 18:06:17

标签: reactjs react-hooks use-effect

const [query, setQuery] = useState([])

React.useEffect (() => {   
  fetch(url)
  .then((res) => res.json())
        .then((data) => {
          setQuery(data) 
          console.log(query);           
         handleChange(); 
        })
})

我有2个问题:

  1. 当我console.log(query)时为空。但是console.log(data)显示正确的数组,怎么办?
  2. handlechange()在提取完成之前得到执行,为什么?

谢谢!

1 个答案:

答案 0 :(得分:0)

您可能不清楚useState的工作方式。在这里检查:https://reactjs.org/docs/hooks-state.html

我有2个问题:

  1. 当我console.log(query)时为空。但是console.log(data)显示正确的数组,怎么办?

状态查询将在调用组件(重新渲染)后更新。因此,这里的控制台会变旧query

  1. handlechange()在提取完成之前得到执行,为什么?

我认为handleChange将在提取完成后执行。但是您的情况可能是您使用un updated query来使用。 您可以使用useEffect来触发handleChange,这可以确保query已经更新之后。示例:

React.useEffect(() => handleChange(), [query]);