如何解决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 举报,一经查实,本站将立刻删除。