Javascript 如何使用异步函数在UseMoom中设置状态?
我正在尝试使用Javascript 如何使用异步函数在UseMoom中设置状态?,javascript,reactjs,Javascript,Reactjs,我正在尝试使用usemo() const[text,setText]=useState('hello') const fakeApiCall=新承诺(解析=>“世界”) useMemo(异步()=>{ const value=等待fakeApiCall setText(值) }, []) 执行此操作时,text的值仍将保持为hello,而不是world。有可能做到这一点吗?为什么这不起作用?如果我记得正确,对于给定的一对依赖项,usemo返回一个值。因此,理想情况下,您应该传递依赖项。另外,u
usemo()
const[text,setText]=useState('hello')
const fakeApiCall=新承诺(解析=>“世界”)
useMemo(异步()=>{
const value=等待fakeApiCall
setText(值)
}, [])
执行此操作时,
text
的值仍将保持为hello
,而不是world
。有可能做到这一点吗?为什么这不起作用?如果我记得正确,对于给定的一对依赖项,usemo
返回一个值。因此,理想情况下,您应该传递依赖项。另外,useMemo(()=>{},[])
不是组件将挂载
。请尝试useffect(()=>{},[])
,因为应该在安装组件后提取API数据。否则,组件中可能存在延迟usemo
用于记忆值,应该没有副作用。我认为您希望使用useffect
钩子来初始化状态。另外,出于所有实际目的,componentWillMount
已被弃用,请使用与componentDidMount
等效的useffect
并带有空的依赖项数组。@drewerese但是如果我使用useffect
,它将不会在服务器端触发,并且我不能只在客户端获取数据。对吗,它得到了一个有点时髦的反应挂钩,安装,和固态继电器。谷歌搜索找到了一系列解决方法。无论如何,你需要将fakeApiCall
创建放在钩子中,在那里你等待承诺。如果我记得正确的话,对于给定的一对依赖项,useMemo
返回一个值。因此,理想情况下,您应该传递依赖项。另外,useMemo(()=>{},[])
不是组件将挂载
。请尝试useffect(()=>{},[])
,因为应该在安装组件后提取API数据。否则,组件中可能存在延迟usemo
用于记忆值,应该没有副作用。我认为您希望使用useffect
钩子来初始化状态。另外,出于所有实际目的,componentWillMount
已被弃用,请使用与componentDidMount
等效的useffect
并带有空的依赖项数组。@drewerese但是如果我使用useffect
,它将不会在服务器端触发,并且我不能只在客户端获取数据。对吗,它得到了一个有点时髦的反应挂钩,安装,和固态继电器。谷歌搜索可以找到一系列解决办法。无论如何,你需要把fakeApiCall
创建放在这个钩子里,在那里你等待承诺。