【发布时间】:2020-06-29 06:01:56
【问题描述】:
我有一个用 useState 初始化状态的功能组件,然后通过输入字段更改此状态。
然后我有一个模拟 componentWillUnmount 的 useEffect 挂钩,以便在卸载组件之前,将当前更新的状态记录到控制台。但是,记录的是初始状态而不是当前状态。
这是我想要做的简单表示(这不是我的实际组件):
import React, { useEffect, useState } from 'react';
const Input = () => {
const [text, setText] = useState('aaa');
useEffect(() => {
return () => {
console.log(text);
}
}, [])
const onChange = (e) => {
setText(e.target.value);
};
return (
<div>
<input type="text" value={text} onChange={onChange} />
</div>
)
}
export default Input;
我将状态初始化为“初始”。然后我使用输入字段来改变状态,比如说我输入“新文本”。但是,卸载组件时,控制台会记录“初始”而不是“新文本”。
为什么会这样?如何在卸载时访问当前更新的状态?
非常感谢!
编辑:
将文本添加到 useEffect 依赖数组并不能解决我的问题,因为在我的实际场景中,我想做的是根据当前状态触发异步操作,这样做效率不高每次“文本”状态发生变化时。
我正在寻找一种仅在组件卸载之前获取当前状态的方法。
【问题讨论】:
标签: reactjs react-hooks use-effect