【发布时间】:2021-03-30 01:24:07
【问题描述】:
我有一个简单的组件,它可以将链接复制到剪贴板,并且想用复选标记交换链接图标。我有这样做的逻辑设置,但是在 3 秒后重置状态以将按钮重置回链接图标时出现问题。如何正确设置我的useEffect 和状态挂钩以设置然后重置状态以显示/隐藏链接到复选标记并再次返回?
const [copySuccess, setCopySuccess] = useState('');
const [visible, setVisible] = useState(true);
const copyToClipBoard = async copyHeader => {
try {
await navigator.clipboard.writeText(copyHeader);
setCopySuccess('Copied!');
} catch (err) {
setCopySuccess('Failed to copy!');
}
};
<Button>
{copySuccess ? (
<Icon name="success" />
):(
<Icon
name="linked"
onClick={() => copyToClipBoard(url)}
/>
)}
</Button>
我正在尝试像这样的useEffect:
useEffect(() => {
setTimeout(() => {
setVisible(false);
}, 3000);
});
但不确定如何使用setVisible 状态和超时,将图标换回链接,让用户知道他们可以再次复制它。
【问题讨论】:
-
尝试在
useEffect依赖数组中包含copySuccess作为依赖。
标签: reactjs react-hooks use-effect use-state