【发布时间】:2021-01-26 13:27:44
【问题描述】:
我正在学习 React,遇到了以下棘手的问题,下面的代码输出如下
IN 3
这里 0
根据我的理解setVideos 已经为Videos 数组设置了值,那么为什么返回的长度是0?
const [Videos, setVideos] = useState([])
useEffect(() => {
axios.get('/api/video/getVideos')
.then(response => {
if (response.data.success) {
console.log("IN " + response.data.videos.length)
setVideos(response.data.videos)
console.log("HERE " + Videos.length);
} else {
console.log("OUT");
alert('Failed to get Videos')
}
})
}, [])
【问题讨论】:
-
状态变化在 React 中是异步的。你不能在下一行
console.log他们。在useEffect之外打印出来 -
阅读一下 - 希望它可以解决您可能想知道的一些问题 - reactjs.org/docs/state-and-lifecycle.html#using-state-correctly
标签: reactjs react-hooks