useEffect里面setState获取不到异步的数据

console.log(res) 在控制台里可以正常看到数据。
显示出的结果[{"name":"电抗器","spec":"辅导","unit":"地方","unitprice":12,"price":120,"proID":500001,"number":10,"key":1}]。
但是tableData里面仍然是空数组没有更新数据是为什么?

const [tableData, setTableData] = useState<[]>([]);
 useEffect(() => {
    getproducts(location.query.orderID).then(res=> {    
      setTableData(res)  
      console.log(res)  
      console.log(tableData) // 这里获取不到数据 
    })
  }, []); 
console.log(tableData) // 这里可以获取到数据
return (
   console.log(tableData)
  //这里也获取不到tableData 的数据 这里控制台显示的是空数组
)
阅读 140
评论
    2 个回答

    你使用了 useEffect(fn,[]) 只会在初次挂载完成后执行一次,里面state 永远是初始值[] 你可以理解为 componentDidMount()
    如果你想每次更新state(你这里是 tableData)都能在 useEffect 中读取到,那么请使用useEffect(fn) 或者 useEffect(fn,[tableData])

    推荐你系统学习下官方文档关于Hooks的介绍 =》Hooks官方文档