首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如果与setInterval、react-typescript一起使用,则为useRef类型

如果与setInterval、react-typescript一起使用,则为useRef类型
EN

Stack Overflow用户
提问于 2021-01-09 09:23:39
回答 6查看 4.2K关注 0票数 6

我正在我的应用程序中做一个简单的动画。

代码语言:javascript
复制
let flipInterval = useRef();



const startAnimation = () => {
    flipInterval.current = setInterval(() => {
      setIsFlipping((prevFlipping) => !prevFlipping);
    }, 10000);
  };

对于flipInterval.current,我得到了“类型‘超时’不能赋值给类型‘未定义’”。所以我检查了如何使用超时类型,我看到人们正在使用,但这不起作用。

代码语言:javascript
复制
 let flipInterval = useRef<typeof window.settimeout>();

我还传递了number useRef<number>(),这次我得到“类型'Timeout‘不能赋值给类型'number'”

这也不起作用。

代码语言:javascript
复制
  let flipInterval = useRef<typeof window.setInterval>();
EN

回答 6

Stack Overflow用户

发布于 2021-07-14 05:39:28

代码语言:javascript
复制
 const intervalRef: { current: NodeJS.Timeout | null } = useRef(null);


const startAnimation = () => {
   const id = setInterval(() => {
       setIsFlipping((prevFlipping) => !prevFlipping);
   }, 10000);
      intervalRef.current = id;
 };

  const clear = () => {
    clearInterval(intervalRef.current as NodeJS.Timeout);
  };
票数 3
EN

Stack Overflow用户

发布于 2021-06-17 20:41:20

如果您正在解除抖动并需要清除超时,则需要处理null

由于问题的标题,发布这篇文章可能会对其他人有所帮助。

代码语言:javascript
复制
const flipInterval:{current: NodeJS.Timeout | null} = useRef(null)

const startAnimation = () => {
  flipInterval.current && clearTimeout(scrollTimeout.current);
        
  flipInterval.current = setInterval(() => {
    setIsFlipping((prevFlipping) => !prevFlipping)
  }, 10000)
}
票数 1
EN

Stack Overflow用户

发布于 2021-01-09 10:05:52

您需要传递正确的setInterval返回值类型。为此,请使用ReturnType

代码语言:javascript
复制
const flipInterval = useRef<ReturnType<typeof setInterval>>(null)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65638439

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档