如何在 React 中使用 RXJS fromEvent?

2023-11-25

我试图在反应中记录按钮上的点击事件:

const InputBox = () => {
  const clicky = fromEvent(
    document.getElementById('clickMe'),
    'click'
  ).subscribe(clickety => console.log({ clickety }));

  return (
    <button id="clickMe" type="button">
      Click Me
    </button>
  );
};

我收到以下错误“事件目标无效”

enter image description here

设置似乎没问题。如果我更换document.getElementById('clickMe') with document然后它会记录点击次数。但这会记录文档中的任何点击,我只想点击相关按钮。

我尝试使用 ref 代替......

const InputBox = () => {
  const buttonEl = React.useRef(null);

  const clicky = fromEvent(buttonEl.current, 'click').subscribe(clickety =>
    console.log({ clickety })
  );

  return (
    <button ref={buttonEl} type="button">
      Click Me
    </button>
  );
};

...但随后我收到相同的“无效事件目标”错误。

有人可以帮助我理解为什么这是一个无效的事件目标以及如何解决这个问题,以便我可以在反应中使用 fromEvent 。


Update

问题是我在安装反应组件时没有注册可观察的。

如果这样做,卸载时还必须卸载该组件。

这现在对我有用。

const InputBox = () => {
  React.useEffect(() => {
    const click$ = fromEvent(
      document.getElementById('clickMe'),
      'click'
    ).subscribe(clickety => console.log({ clickety }));
    return () => click$.unsubscribe();
  }, []);

  return (
    <button id="clickMe" type="button">
      Click Me
    </button>
  );
};

把它包起来useEffect()那就是 dom 准备好的时候

const InputBox = () => {
  const buttonEl = React.useRef(null);

  useEffect(() => {
    const clicky = fromEvent(buttonEl.current, 'click').subscribe(clickety =>
      console.log({ clickety })
    );

    return () => clicky.unsubscribe();
  }, []);

  return (
    <button ref={buttonEl} type="button">
      Click Me
    </button>
  );
};
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 React 中使用 RXJS fromEvent? 的相关文章

  • 如何更改传单中功能集的样式?

    我正在看等值区域的例子 https leafletjs com examples choropleth https leafletjs com examples choropleth 这是他们使用的数据源 type Feature prop
  • 网站 YouTube 嵌入视频不断播放

    我正在使用 youtube 提供的 iframe 在我的网站上嵌入视频 我还使用了一个 css 弹出窗口 这是我从这个页面学到的http www pat burt com web development how to do a css po
  • 非 DOM 对象上的 jQuery 自定义事件

    我最近阅读了一些代码 其功能如下 bob name Bob Smith rank 7 bob bind nameChanged function bob trigger nameChanged 这似乎有效 但我在 jQuery 文档或源代码
  • 在Javascript中按降序对字符串进行排序(最有效)?

    W3Schools 有这个例子 var fruits Banana Orange Apple Mango fruits sort fruits reverse 这是在 Javascript 中按降序对字符串进行排序的最有效方法吗 Updat
  • 如何按照编写的顺序迭代 javascript 对象属性

    我发现了代码中的一个错误 我希望通过最少的重构工作来解决该错误 此错误发生在 Chrome 和 Opera 浏览器中 问题 var obj 23 AA 12 BB iterating through obj s properties for
  • 如何使用canvas.toDataURL()将画布保存为图像?

    我目前正在构建一个 HTML5 Web 应用程序 Phonegap 本机应用程序 我似乎不知道如何将画布保存为图像canvas toDataURL 有人可以帮我吗 这是代码 有什么问题吗 我的画布被命名为 canvasSignature J
  • 如何使用 jest 模拟第三方库

    我正在开发一个node js应用程序使用nestjs我有一堂课叫LoggerService如下 export class LoggerService private logger Rollbar constructor this logge
  • Leaflet js虚构地图

    我是 Leaflet 的新手 我想了解如何创建完全交互式的虚构地图 我有一张图像想要转换为传单地图 该图像基本上像图表一样具有许多连接和点 我想首先将该图像转换为地图 能够将鼠标悬停在这些点上 突出显示它们并显示有关它们的信息 并且还可以在
  • 检查 touchend 是否在拖动后出现

    我有一些代码可以更改表的类 在手机上 有时表格对于屏幕来说太宽 用户将拖动 滚动来查看内容 但是 当他们触摸并拖动表格时 每次拖动都会触发 touchend 如何测试触摸端是否是触摸拖动的结果 我尝试跟踪dragstart和dragend
  • JavaScript 中数组的 HTML 数据列表值

    我有一个简单的程序 它必须从服务器上的文本文件中获取值 然后将数据列表填充为输入文本字段中的选择 为此 我想要采取的第一步是我想知道如何动态地将 JavaScript 数组用作数据列表选项 我的代码是
  • Javascript - 将值从下拉框传递到 Google Maps API

    我正在使用 Google 地图 API 为一家出租车公司创建报价表 目前 用户在 2 个文本框中输入出发点和接载点 API 会计算两点之间的距离以及行程费用 我正在尝试添加两个具有设定位置的下拉框 以便用户可以选择这些位置之一或使用文本框输
  • 如何流式传输 OpenAI 的完成 API?

    我想流式传输结果通过 OpenAI 的 API 完成 https beta openai com docs api reference completions 该文档提到使用服务器发送的事件 https developer mozilla
  • 是否有任何非轮询方式来检测 DOM 元素的大小或位置何时发生变化?

    很长一段时间以来 我一直在寻找一种方法来检测 DOM 元素的大小或位置何时发生变化 这可能是因为窗口调整了大小 或者因为向该元素添加了新的子元素 或者因为在该元素周围添加了新元素 或者因为 CSS 规则已更改 或者因为用户更改了浏览器的字体
  • 单击关闭按钮后不显示 Google 一键登录 UI

    我正在尝试按照本指南使新的谷歌一键登录工作 https developers google com identity one tap web https developers google com identity one tap web
  • Twitter 嵌入时间轴小部件

    我继续下载http platform twitter com widgets js http platform twitter com widgets js And the http platform twitter com embed t
  • 为什么“tbody”不设置表格的背景颜色?

    我在用 tbody 作为 CSS 选择器来设置background color在一个表中 我这样做是因为我有多个 tbody 表内的部分 它们具有不同的背景颜色 我的问题是 当使用border radius在细胞上 细胞不尊重backgro
  • 如何在 javascript 正则表达式中匹配平衡分隔符?

    我原以为这个问题是不可能的 据我所知 Javascript 的正则表达式既没有递归插值 也没有漂亮的 NET 平衡组功能 但问题就在那里 如问题 12 所示正则表达式 alf nu http regex alf nu 匹配平衡对 lt an
  • 单击引导分页链接时调用 jquery 函数

    我想在单击引导分页链接时调用 jquery 函数 假设我想从第1页遍历到第2页 应该调用一个jquery函数 我正在使用以下代码 但它不起作用 ul pagination on click li function alert page ch
  • 防止文本区域出现新行

    我正在开发聊天功能 使用 Vue 并使用文本区域作为输入 以便溢出换行 并且对于编写较长消息的用户来说更具可读性 不幸的是 当用户按下 Enter 键并提交时 光标会在提交之前移动到新行 从而使用户体验感觉不佳 关于如何使用普通 Javas
  • 如何在打字稿文件中导入没有定义文件的js库

    随着我们的项目变得越来越大 我想从 JavaScript 切换到 TypeScript 以帮助进行代码管理 然而 我们使用许多库作为 amd 模块 我们不想将其转换为 TypeScript 我们仍然想将它们导入 TypeScript 文件

随机推荐

  • 如何在 wpf 中使用 RelayCommand?

    我怎样才能使用RelayCommand in wpf Relay 命令在 WPF 中不存在 它只是一个外部类 在这篇 MSDN 文章 如果你想使用它 你需要自己编写它 否则 您可以使用 WPF 工具包中的 Delegate 命令here它比
  • Android 中带有图像和视频的自定义图库可选择多个项目

    我想创建一个自定义图库来显示 SD 卡中的所有图像和视频 以及持续时间 我正在使用以下代码构建自定义画廊 Code final String columns MediaStore Images Media DATA MediaStore I
  • 计算列表中有多少个对象类型Python

    如果我有一个 python 列表 a 1 1 23 abc ABC 6 45 2 3 4 4 98 有没有一种非常简单的方法来计算对象类型的数量a 比以下更简单但产生相同结果的东西 l i for i in a if type a i in
  • 在 C# 中获取两个数组之间的“差异”?

    假设我有这两个数组 var array1 new A B C var array2 new A C D 我想了解两者之间的差异 我知道我只需几行代码即可编写此内容 但我想确保我不会缺少内置语言功能或 LINQ 扩展方法 理想情况下 我最终会
  • 无法找到要从 groovy 闭包中的 newInstance 上的列表中调用哪个方法 ()

    我正在学习 groovy 我正在尝试使用所有字段的默认值动态初始化我的类 所以我的处理方式是 我获取所有属性的列表并获取该对象的类型并创建该类型的对象 但是在执行时出现错误newInstance Exception in thread ma
  • numpy.sum 可能比 Python for 循环慢

    当对特定轴上的数组求和时 专用数组方法array sum ax 实际上可能比 for 循环慢 v np random rand 3 1e4 timeit v sum 0 vectorized method 1000 loops best o
  • 如何在 Web API 请求中的 FromBody ViewModel 中使用带有 EnumMember 属性的枚举?

    我正在尝试在 ASP NET Core Web API 项目中实现 HttpPost 方法 FromBody 查看模型和枚举 过去 将视图模型与 FromBody 属性效果很好 在我的特定场景中 我想提供一个 JSON 端点 在其中将给定值
  • 如何在 Laravel 中流式传输视频

    我正在尝试流式传输刀片文件中的视频 通常视频正在加载 但我无法来回播放 这是我关注的链接 https codesamplez com programming php html5 video streaming tutorial 我已经在我的
  • 当类型已知时,是否有任何技术原因在 C# 中使用或不使用 var?

    我读到的 C 代码似乎越来越多地使用var类型标识符 foreach var itemChange in ItemChanges 代替明确地说明类型 foreach ItemChange itemChange in ItemChanges
  • 如何从.cer和.key获取.pfx文件?

    在此提问之前 我已经搜索了很多关于我的问题 而且问题仍然存在 以下是我已经阅读过的帖子参考 如何从证书和私钥创建 pfx 文件 将 CERT PEM 证书转换为 PFX 证书 如何从 key和 crt文件获取 pem文件 如何从 cer 文
  • 划分类:jenks 与 kmeans

    我想将一个向量 长度约为 10 5 分为五个类 具有功能classIntervals从包装中classInt我想用style jenks 自然中断 但即使对于只有 500 的小得多的向量 这也会花费大量时间 style kmeans 几乎立
  • 使用 DataContext 从 LINQ 查询填充 DataTable 的最快方法

    我正在尝试运行 linq 查询 但我需要结果作为数据表 因为我使用它来将来自不同查询的记录存储在同一视图状态对象中 下面的 2 个版本可以编译 但返回一个空集 确切的错误是 值不能为空 参数名称 来源 是的 我已经检查过有数据 MyData
  • 当前分支没有跟踪信息

    我使用 github 的时间相对较短 并且一直使用客户端来执行提交和拉取 我昨天决定从 git bash 尝试一下 并成功创建了一个新的存储库并提交了文件 今天我从另一台计算机对存储库进行了更改 我已经提交了更改 现在我回到家并执行了git
  • React:读取history.push中作为参数传递的数据

    我是新来反应的 我正在尝试发送一些数据作为参数history push 基本上 我在单击按钮时调用一个方法 并在该方法内调用一个 api 如果我得到成功响应 我会重定向到其他页面 并且我还需要传递一些数据 下面是我的代码 class Log
  • 在 ElasticBeanstalk 上运行 Grunt

    我有一个节点应用程序 需要 grunt 进行 构建 然后应用程序才能成功执行 运行源代码的连接 缩小 加速等 我已经在具有 SSH 访问权限的 EC2 实例上运行了它 因为我可以通过 SSH 进入目录并在部署过程中运行 Grunt 然而 为
  • 为什么“gem”和“bundle”不使用相同的 libxml2?

    我似乎陷入了沮丧的递归循环中 我正在尝试 捆绑安装 一个项目 但结果是 An error occurred while installing nokogiri 1 6 6 2 and Bundler cannot continue Make
  • 如何防止两个CUDA程序互相干扰

    我注意到 如果两个用户尝试同时运行 CUDA 程序 它往往会锁定卡或驱动程序 或两者 我们需要重置卡或重新启动机器以恢复正常行为 有没有办法锁定 GPU 以便其他程序在运行时无法干扰它 Edit 操作系统是在服务器上运行的 Ubuntu 1
  • 在Java中,字符串是字符数组吗?

    我想知道 如果String是一个集合 我已经阅读了周围的内容 但仍然很困惑 字符串是不可变的表示字符序列的对象 CharSequence是 String 实现的接口之一 与字符数组和字符集合的主要区别 字符串无法修改 不可能 忽略反射 添加
  • 从两个日期之间的日期范围中选择数据

    我有一张名为Product Sales它保存这样的数据 Product ID Sold by Qty From date To date 3 12 7 2013 01 05 2013 01 07 6 22 14 2013 01 06 201
  • 如何在 React 中使用 RXJS fromEvent?

    我试图在反应中记录按钮上的点击事件 const InputBox gt const clicky fromEvent document getElementById clickMe click subscribe clickety gt c