3 回答
![?](http://img1.sycdn.imooc.com/533e4ce900010ae802000200-100-100.jpg)
TA贡献1887条经验 获得超5个赞
setInfo 是异步的,在下一次渲染之前你不会看到更新的状态,所以当你这样做时:
if(data!==undefined){
setInfo({...info, data })
}
console.log(info)
您将info 在状态更新之前看到。
你可以使用useEffect钩子(它告诉 React 你的组件在渲染后需要做一些事情)来查看 的新值info:
const StartPage = props => {
const [user, setUser] = useState('');
...
useEffect(() => {
console.log(info);
}, [info]);
...
}
编辑
同样正如其他人指出的那样,您可能希望data在设置状态时进行解构:(setInfo({...info, ...data })这完全取决于您打算如何使用它),否则状态将如下所示:
{
email: ...
data: ...
}
![?](http://img1.sycdn.imooc.com/54586431000103bb02200220-100-100.jpg)
TA贡献1752条经验 获得超4个赞
我不确定您所说的“不工作”是什么意思,但看起来您正在解构信息而不是数据。我怀疑它正在设置状态,但不是您想要的方式。如果 data 是一个以 email 作为属性的对象,你很可能也想像这样解构它:
setInfo({...info, ...data})
如果你想要这样的东西,你可以使用 useEffect 到 console.log 状态更改:
import React, { useState, useEffect } from 'react'
const StartPage = props => {
const [info,setInfo] = useState({ email:'' })
useEffect(() => {
console.log(info)
}, [info])
添加回答
举报