0

有没有一种模式或技术可以用来处理 Recoil 中的事件?

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

我一直在努力思考如何在 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)

4

1 回答 1

1

我认为您正在寻找的是 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);
        }
    }

即使它不是事件处理程序或引发事件,但您可以定期调用它并监视状态更改。

于 2021-05-13T19:38:02.770 回答