我如何在 React 18 中使用 'useEffect'
How do I use 'useEffect' in React 18
我正在关注一个 youtube 教程,该教程使用的是 React 17,我使用的是 React 18。我在格式化一些动画文本的部分,一切正常,但是我正在进行的部分是将句子的字母设置为在悬停时改变。我收到以下错误:
react-dom.development.js:86 警告:useEffect 不能 return 除了用于清理的函数之外的任何东西。你 returned: 2
这是给我带来问题的代码片段:
useEffect(() => {
return setTimeout(() => {
setLetterClass('text-animate-hover')
}, 4000)
}, [])
这是我的 text-animate-hover 的 scss class:
.text-animate-hover {
min-width: 10px;
display: inline-block;
animation-fill-mode: both;
&:hover {
animation: rubberBand 1s;
color: #ffd700;
}
}
我读到我不需要将 'useEffect' 与 React 18 一起使用,但我不明白我应该做什么。我所做的大部分搜索都是 return 编辑了很多使用 'useEffect' 和 'async' 问题的实例,我无法将这些与我的具体问题联系起来。
非常感谢对此的任何帮助。
-N8
从useEffect中移除return,像这样:
useEffect(() => {
setTimeout(() => {
setLetterClass('text-animate-hover')
}, 4000);
}, []);
您可以在此处阅读有关 useEffect 的更多信息:https://reactjs.org/docs/hooks-effect.html
您应该始终清除组件卸载的超时或任何时间间隔。
useEffect(() => {
let timeout;
timeout = setTimeout(() => {
setLetterClass("text-animate-hover");
}, 4000);
return () => {
clearTimeout(timeout);
};
}, []);
我正在关注一个 youtube 教程,该教程使用的是 React 17,我使用的是 React 18。我在格式化一些动画文本的部分,一切正常,但是我正在进行的部分是将句子的字母设置为在悬停时改变。我收到以下错误:
react-dom.development.js:86 警告:useEffect 不能 return 除了用于清理的函数之外的任何东西。你 returned: 2
这是给我带来问题的代码片段:
useEffect(() => {
return setTimeout(() => {
setLetterClass('text-animate-hover')
}, 4000)
}, [])
这是我的 text-animate-hover 的 scss class:
.text-animate-hover {
min-width: 10px;
display: inline-block;
animation-fill-mode: both;
&:hover {
animation: rubberBand 1s;
color: #ffd700;
}
}
我读到我不需要将 'useEffect' 与 React 18 一起使用,但我不明白我应该做什么。我所做的大部分搜索都是 return 编辑了很多使用 'useEffect' 和 'async' 问题的实例,我无法将这些与我的具体问题联系起来。
非常感谢对此的任何帮助。
-N8
从useEffect中移除return,像这样:
useEffect(() => {
setTimeout(() => {
setLetterClass('text-animate-hover')
}, 4000);
}, []);
您可以在此处阅读有关 useEffect 的更多信息:https://reactjs.org/docs/hooks-effect.html
您应该始终清除组件卸载的超时或任何时间间隔。
useEffect(() => {
let timeout;
timeout = setTimeout(() => {
setLetterClass("text-animate-hover");
}, 4000);
return () => {
clearTimeout(timeout);
};
}, []);