【发布时间】:2020-12-01 06:27:45
【问题描述】:
我希望我以正确的方式表达我的问题。这是我正在做的事情。
我设置了一个三元运算符,如下面的代码。它检查状态是否存在,如果状态不存在则打开一个 Modal 表单。
{ !selectPet && selectClient ?
<Modal>
<Form>
<form stuff/>
</Form>
</Modal>
: null
}
selectPet 像这样设置在 useEffect 钩子中。
function clientsPets() {
if (selectClient !== undefined) {
API.getClientPets(selectClient._id)
.then(res => {
if (res.length > 0) {
setSelectPet(res) // Right here is where the selectPet is being set
setActivePet(res[0])
API.getPetSessionsByPetId(res[0]._id)
.then(res => setTrainingSessions(res))
.catch(err => console.log(err))
} else {
return
}
})
.catch(err => console.log(err))
} else { history.push("/") }
}
useEffect(() => {
clientsPets()
}, [])
我遇到的问题是当页面首次加载时,Modal 在 useEffect 完成之前显示不到一秒钟。逻辑上我不确定如何解决这个问题。我可以在检查 selectPet 状态之前设置某种间隔还是有更好的方法来解决这个问题?
【问题讨论】:
-
根据您的问题,您似乎为您的 selectClient 提供了一些初始值,请将其设为 null,您的问题将得到解决。
标签: javascript reactjs state conditional-operator use-effect