【问题标题】:Store complex APIs objects and allow access from components and redux存储复杂的 API 对象并允许从组件和 redux 访问
【发布时间】:2018-01-24 20:04:23
【问题描述】:

我尝试搜索有关如何链接需要配置或由某些经理提供的复杂 API 的“良好实践”,但我似乎无法找到如何通过 redux 建立“良好”数据流。

到目前为止,我一直在考虑创建一个 reducer,其操作映射我可以在给定复杂对象上调用的每个方法。

为了提供更多上下文,我正在构建一个框架以使用此库 (https://github.com/Polidea/react-native-ble-plx) 与蓝牙设备交互,并且 startScanDevice 返回我可以与之交互的复杂对象 (https://polidea.github.io/react-native-ble-plx/#device),它也拥有它自己的状态(例如,设备知道它是否已连接,它也知道它的蓝牙服务等)。

根据我的阅读,redux 状态应该具有简单的对象,这样它就可以具有时间旅行属性并简化持久性。

存储那些复杂的对象并在我的组件、reducer、动作、商店和我目前正在处理的这个 API 之间实现交互是一个好的设计?

目前,我正在考虑为我的 API 提供回调,该 API 将调度带有新数据的 redux 操作以添加到 redux 存储中,但我似乎找不到合适的方法来存储我的复杂对象并提供对它的访问为了调用这些方法并给它们回调。

这是一个完整的流程示例:

  • 从 plx-ble API 调用 startScanDevice 并提供回调以接收现有 API 给出的设备对象
  • 接收设备对象并将其存储在某处
  • 使用有关我在整个应用程序中需要的设备对象的正确信息更新 redux 存储
  • 从 reducer 中,检索步骤 2 中的设备对象并调用与设备交互的方法(从特征读取的示例)
  • 使用第 4 步中读取的数据更新 redux 存储

第 2 步和第 4 步是我似乎找不到合适的方法。

任何帮助将不胜感激!

【问题讨论】:

    标签: reactjs react-native redux react-redux


    【解决方案1】:

    Redux-thunk 中间件可能对您有所帮助。

    Redux Thunk 中间件允许您编写返回的动作创建者 一个函数而不是一个动作。 thunk 可用于延迟 分派一个动作,或仅在某个条件满足时才分派 遇见了。内部函数接收 store 方法调度和 getState 作为参数。

    存储那些复杂的对象

    不要让这件事复杂化。尽量让你的状态保持平坦。 喜欢

    state={
      PoweredOn: false,
      Device: "deviceName",
      //similarly all
    }
    

    你把它保持得越平,它就越容易修改。

    【讨论】:

    • 这将有助于传递有关方法调用的承诺,但我主要担心的是 ble-plx 确实为我提供了复杂对象以及我需要调用以与蓝牙设备交互的方法。这些对象是我似乎无法找到合适的“存储”位置(阅读保存参考)并与其他对象链接的对象......
    • 好的,现在我明白了问题的深度了。作为回应,您也得到了这些方法。但只是为了帮助我,您能否给我一些简单的对象以及您以后要如何调用它。
    【解决方案2】:

    出于这个原因,您链接的 API 文档似乎有重复的调用这些方法的方法。

    例如,您可以通过调用device.connect(options) 或调用封装方法connectToDevice(deviceId, options) 连接到设备。第二种方法的好处是您只需要跟踪 ID 值,不需要存储整个设备对象。

    【讨论】:

    • 调用 connectToDevice 会为完整的设备对象返回一个 Promise,该对象具有与蓝牙设备交互的方法。根据您的说法,我必须忽略返回的设备“对象”并始终回退到“原始”管理器方法调用?
    • 基本上,是的。快速浏览一下,看起来他们每个功能都有两个版本,所以这应该很容易。请注意,promise 的响应仍应用作成功/失败的确认(您应随后将其发送给相关的 reducer)。
    猜你喜欢
    • 1970-01-01
    • 2011-04-27
    • 1970-01-01
    • 2013-04-04
    • 2019-01-21
    • 2018-06-20
    • 2016-10-12
    相关资源
    最近更新 更多