【发布时间】:2019-12-30 15:53:42
【问题描述】:
我正在使用 Context API 来管理我的应用程序全局状态,并且我第一次尝试使用钩子来做到这一点......我在 async/await 方面遇到了一些麻烦,让我解释一下:
这是我的提供者:
const JobProvider = (props) => {
const [modalOpen, setModalOpen] = useState(false)
const [modalJob, setModalJob] = useState({})
const [jobs, setJobs] = useState([])
const [searchItem, setSearchItem] = useState('')
const [page, setPage] = useState(1)
const [now, setNow] = useState('')
const handleSearchChange = (e) => {
setSearchItem(e.target.value)
}
const getJob = id => {
// bla bla bla
return something;
};
// ...
}
在该提供程序内部,我有一个函数 nextPage() 只更新页码并在此之后返回它...这是具有该功能的提供程序:
const JobProvider = (props) => {
const [modalOpen, setModalOpen] = useState(false)
const [modalJob, setModalJob] = useState({})
const [jobs, setJobs] = useState([])
const [searchItem, setSearchItem] = useState('')
const [page, setPage] = useState(1)
const [now, setNow] = useState('')
const handleSearchChange = (e) => {
setSearchItem(e.target.value)
}
const getJob = id => {
// bla bla bla
return something;
};
async function nextPage() {
await setPage(page + 1)
console.log(page)
}
// ...
}
但首先是记录页面,并且仅在状态页面更新之后。有没有办法做到这一点?
【问题讨论】:
-
setPage不返回承诺,因此您不能等待它。但是,您可以通过useEffect记录值
标签: reactjs async-await react-hooks react-context