我想获取一个“board_ID”:fetch(“http://本地主机:4000/新游戏”),然后在以下fetch地址中使用board_ID:fetch(“http://localhost:4000/Turn/”+ board_ID)。问题是setboard_ID(之前用useState初始化)没有足够快地更新board_ID,因此在获取“Turn”时出现错误。解决此问题的最佳方法是什么?
useEffect(() => {
if (didFetch == false) {
fetch("http://localhost:4000/NewGame")
.then(res => res.text())
.then(
(result) =>{
console.log(result)
**setboard_ID(result)**
},
(error) => {
setisLoaded(true)
seterror(error)
}
)
}
})
useEffect(() => {
if (getplayer == true){
console.log("http://localhost:4000/Turn/" + board_ID)
**fetch("http://localhost:4000/Turn/" + board_ID)**
.then(res => res.text())
.then(
(result) =>{
console.log(result)
player = result
setGetplayer(false)
},
(error) => {
seterror(error)
}
)
}
})
3条答案
按热度按时间jvlzgdj91#
您可以尝试运行useEffect并依赖于该状态。
然后,第一个useEffect将运行并更新启动第二个的状态
x9ybnkn62#
将相关数组[board_ID]中的board_ID添加到第二个useEffect。
useEffect挂接允许您在功能组件中执行副作用。有一个依赖项数组可控制何时应运行效果。它在装入组件时运行,并在useEffect的依赖项更改后重新呈现组件时运行
uidvcgyl3#
我不知道为什么你的useEffects没有一个依赖数组(这很危险),因为它会重复调用生命周期方法,这会多次重新渲染UI/应用程序,因为应用程序可能会崩溃。另外,我没有看到任何检查第二个useEffects是否存在board_ID。
在相依性数组中新增board_ID应该可以修正部分问题。
你好