Javascript React hooks-等待状态更新

Javascript React hooks-等待状态更新,javascript,html,reactjs,typescript,Javascript,Html,Reactjs,Typescript,我正在使用useState()钩子,我发现我的应用程序有一个bug,因为设置值是异步的。如果我有这样的代码: const [data, setData] = useState([]) useEffect(() => { const getData = async () => { const res = await fetchData() console.log(data); // [] setData(res.data.hits);

我正在使用useState()钩子,我发现我的应用程序有一个bug,因为设置值是异步的。如果我有这样的代码:

 const [data, setData] = useState([])
  useEffect(() => {
    const getData = async () => {
      const res = await fetchData()
      console.log(data); // []
      setData(res.data.hits);
      console.log(res.data.hits); // Array full of objects
      console.log(data); // Still []
    }
    getData()
  }, [fetchData]);

如何仅在新状态已实际设置时执行某些特定逻辑?

您可以使用
useffect


这将在每次
数据更改时触发内部内容。

您可以使用
useffect



这将在每次
数据
更改时触发其内部内容。

即使它不是异步的,
数据
仍然使用
常量
声明-它不会更改您想要什么样的“执行某物”?副作用,比如API调用?还是要更改渲染的内容或其他内容?添加一个新的效果以监视
数据
为什么不使用条件渲染?一旦数据可用,它就会执行。@CertainPerformance当状态更新时,setState方法有一个回调。我正在寻找类似的东西。即使它不是异步的,
数据
仍然是用
常量
声明的-它不会改变你想要什么类型的“执行某物”?副作用,比如API调用?还是要更改渲染的内容或其他内容?添加一个新的效果以监视
数据
为什么不使用条件渲染?一旦数据可用,它就会执行。@CertainPerformance当状态更新时,setState方法有一个回调。我正在寻找类似的东西。总的来说-是的,这是正确的答案。但我的具体问题是,我有另一个useffect(),它依赖于其他不同的属性,当它被触发时,它仍然具有数据变量的旧状态
使用
res
作为参数,将执行您想要的逻辑?不完全是,因为我想要执行的逻辑是另一个useffect()调用具有其他变量作为依赖项的。并将
数据添加为其他useEffect的依赖项?我不希望每次“数据”更改时都运行其他useEffect。通常-是的,这是正确的答案。但我的具体问题是,我有另一个useffect(),它依赖于其他不同的属性,当它被触发时,它仍然具有数据变量的旧状态
使用
res
作为参数来执行您想要的逻辑?不太可能,因为我想要执行的逻辑是另一个useffect()调用,它有其他变量作为依赖项。并将
数据添加为另一个useffect的依赖项?我不希望每次“数据”更改时都运行另一个useffect。
useEffect(() => {
   //your code
}, [data]);