【发布时间】:2021-11-01 11:57:11
【问题描述】:
我正在尝试将“电子邮件”(这是一种状态)分配给“refEmail.current.value”。
所以我做setEmail(response.data) 并且当我做console.log(response.data) 时,我有预期的数据,但如果我在console.log(email) 之后立即做,我仍然有我的状态的默认值。我尝试使用 prevState 但它没有改变任何东西:setEmail(prevState => prevState, response.data)
这是我的代码:
const EditProfilModal = () => {
const [email, setEmail] = useState('exemple')
const refFirstname = useRef();
const refLastname = useRef();
const refEmail = useRef();
useEffect(() => {
const toFetchEmail = async () => {
try {
const params = JSON.parse(localStorage.getItem("user")).user_id;
const response = await axios.get(`http://localhost:4200/api/user/${params}`);
setEmail(prevState => prevState, response.data)
console.log(response.data)
console.log(email);
} catch (err) {
throw err;
}
};
toFetchEmail()
refFirstname.current.value = JSON.parse(localStorage.getItem("user")).user_firstname;
refLastname.current.value = JSON.parse(localStorage.getItem("user")).user_lastname;
refEmail.current.value = email;
}, []);
return (.....)
因此,第一个 console.log 返回预期数据,但第二个返回默认值(示例)而不是预期数据。为什么以及如何立即更新状态?
【问题讨论】:
-
您无法立即更新。 email 的值在再次到达分配给它的行之前不会改变。