useState是异步更新,想要在设置后直接获取最新的state是拿不到的
例如: 页面更新的时候,更新页码的state,接着重新请求
但是重新请求的时候是拿不到最新的页码的
解决:
// 页码变化时的回调
const pageChange = (page: number, size: number) => {
setPages({page, size})
setIsUpdatePages(true)
}
useEffect(() => {
if (!isUpdatePages) {
setCols(initCols())
getPaperList()
} else {
// 在这里判断调用具体请求哪个分页
!flagPage ? getPaperList() : getPaperListByTeacher()
}
}, [pages])
解释:原理是使用了useEffect这个hook的监视状态变化更新来解决
isUpdatePages是用于判断是否是由于页面更新,因为每次pages改变的时候都会重新调用useEffect,那么有些逻辑只是用于初始化执行一次的,这时候可以用该变量区分开