3 回答

TA貢獻1887條經(jīng)驗 獲得超5個贊
setInfo 是異步的,在下一次渲染之前你不會看到更新的狀態(tài),所以當(dāng)你這樣做時:
if(data!==undefined){
setInfo({...info, data })
}
console.log(info)
您將info 在狀態(tài)更新之前看到。
你可以使用useEffect鉤子(它告訴 React 你的組件在渲染后需要做一些事情)來查看 的新值info:
const StartPage = props => {
const [user, setUser] = useState('');
...
useEffect(() => {
console.log(info);
}, [info]);
...
}
編輯
同樣正如其他人指出的那樣,您可能希望data在設(shè)置狀態(tài)時進行解構(gòu):(setInfo({...info, ...data })這完全取決于您打算如何使用它),否則狀態(tài)將如下所示:
{
email: ...
data: ...
}

TA貢獻1757條經(jīng)驗 獲得超7個贊
從api調(diào)用接收到的數(shù)據(jù)結(jié)構(gòu)是什么?你可以嘗試像這樣設(shè)置它 -
setInfo({ ...info, email: data.email })

TA貢獻1752條經(jīng)驗 獲得超4個贊
我不確定您所說的“不工作”是什么意思,但看起來您正在解構(gòu)信息而不是數(shù)據(jù)。我懷疑它正在設(shè)置狀態(tài),但不是您想要的方式。如果 data 是一個以 email 作為屬性的對象,你很可能也想像這樣解構(gòu)它:
setInfo({...info, ...data})
如果你想要這樣的東西,你可以使用 useEffect 到 console.log 狀態(tài)更改:
import React, { useState, useEffect } from 'react'
const StartPage = props => {
const [info,setInfo] = useState({ email:'' })
useEffect(() => {
console.log(info)
}, [info])
添加回答
舉報