react useState useEffect的问题

function CreateForm (props) {
  const [industry, setIndustry] = useState([]) // 行业
  
  useEffect(() => {
    const getIndData = async () => {
      let res = await getIndustry();
      setIndustry(x => {
        x = res.map(item => {
          return {
            id: item.id, 
            label: item.name,
            pcUrl: item.pcUrl,
            wapUrl: item.wapUrl
          }
        })
        console.log(x, 8)
      })
      console.log('industry', industry,9)
    }
    console.log('industry', industry, 7)
    getIndData()
  }, [])
  console.log('industry', industry, 6)

  return (
    <div>
      {industry.map(item => (
        <p key={item.id}>{item.label}</p>
      ))}
    </div>
  )
}

export default Form.create()(CreateForm);

为什么console.log(x, 8)已经把值赋进去了.
console[9]/ [7] / [6] 都取不到值?
哪里错了吗

阅读 2k
2 个回答

因为 setIndustry 是异步的。

suseEffect的第二个参数可以用来监听,此项内容改变,会触发useEffect的再次执行
可以再写个useEffect,用来监听industry

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题