Reaction有useRef,它允许我保持对对象的引用.我正在try 使用计时器启动对API的重复调用.当用户点击停止时,我想停止重复的呼叫,或"取消订阅".

subscription = timer(0,1000).subscribe(n => dispatch(fetchData()));. subscription.unsubscribe();.

这些函数来自rxjs library

有没有办法在我的function onSubmit()(它在一个函数组件中)中使用Reaction的useRef函数来维护对订阅的引用,以便我可以取消订阅?

function onSubmit(){ 
    /// if 
     subscription = timer(0,1000).subscribe(n => dispatch(fetchData()));
    ///else 
     subscription.unsubscribe();

  } 
    

推荐答案

只能在组件或挂钩中使用useRef().您不能只在独立的JS函数中使用它.

假设您的onSubmit是在一个组件中定义的,那么您可以执行如下操作:

import { useRef } from 'react';

// ...

export const MyComponent = (props) => {

  const subscription = useRef(null);

  function onSubmit() { 
    if (subscription.current === null) {
     subscription.current = timer(0,1000).subscribe(n => dispatch(fetchData()));
    } else {
     subscription.current.unsubscribe();
     subscription.current = null;
    }
  }

  // ...
};

Javascript相关问答推荐

Plotly热图:在矩形上zoom 后将zoom 区域居中

分层树视图

Web Crypto API解密失败,RSA-OAEP

如何在不影响隐式类型的情况下将类型分配给对象?

使用VUE和SCSS的数字滚动动画(&;内容生成)

如何确保预订系统跨不同时区的日期时间处理一致?

<;img>;标记无法呈现图像

打字脚本中方括号符号属性访问和拾取实用程序的区别

是否可以将Select()和Sample()与Mongoose结合使用?

将基元传递给THEN处理程序

对具有相似属性的对象数组进行分组,并使用串连的值获得结果

Jexl to LowerCase()和Replace()

有没有办法通过使用不同数组中的值进行排序

如果我的列有条件,我如何呈现图标?

将字体样式应用于material -UI条形图图例

使用VITE开发服务器处理错误

如何使用useparams从react路由中提取id

从客户端更新MongoDB数据库

如何动态呈现适合未知屏幕大小的最大数量的表行?苗条的

Js问题:有没有办法将数据从标记表转换成图表?