微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

RecoilJS 的事件发射器模式

如何解决RecoilJS 的事件发射器模式

在 Recoil 中,我们可以使用一种模式或技术来处理事件吗?

在 Saga 中,我们可以使用发射方法并创建数据流。

我一直在思考如何在 Recoil 中实现这样的目标。

例如扫描蓝牙连接设备。

 manager.onStateChange(state => {
      const enableScanning = state === State.PoweredOn

      if (enableScanning) {
        manager.startDeviceScan(
          null,{ allowDuplicates: false },(error,scannedDevice) => {
            if (error) {
              return
            }
            if (scannedDevice !== null) {
              //HERE WE NEED TO HANDLE THE ADDITION OF THE DEVICE TO A LIST
            }
          }
        )
      }
    },true)

解决方法

我认为您正在寻找的是 useRecoildCallback。它允许您访问所有状态(快照),而无需参与重新渲染生命周期。此外,一旦您拥有该快照,就有一个 API 允许您过滤更改的状态,

for (const node of snapshot.getNodes_UNSTABLE({ isModified: true })) {
        if (atomKeys.length === 0 || atomKeys.includes(node.key)) {
            console.debug(node.key,snapshot.getLoadable(node).contents);
        }
    }

尽管它不是事件处理程序或引发事件,但您可以定期调用它并监视状态变化。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。