如何从不了解Redux的服务中调度操作?

达加索因

假设我有一个不了解Redux的地理位置服务,并且我将其配置为:

backgroundGeoLocation.configure(
  callback // will be called with an argument when the coordinates change
);

什么是使服务回调调度Redux操作而不store从单独的模块导出并使用store.dispatch()(因为这将是单例)的最干净方法是什么

还有阿布拉莫夫

如果要将某些值传递给JavaScript中的某些代码,则需要使用函数。
例如,

function createGeoLocationService(store) {
  let backgroundGeoLocation = new BackgroundGeoLocation()
  backgroundGeoLocation.configure(coordinates => {
    store.dispatch({ type: 'UPDATE_COORDINATES', coordinates })
  })
  return backgroundGeoLocation
}

现在,无论您在哪里创建商店,都可以创建该服务:

let store = createStore(reducer)
let backgroundGeoLocation = createGeoLocationService(store)

如果需要在组件中访问它,则可以:

  1. 将其设置为单例(是的,不是您想要的,但这是仅客户端应用程序的有效选项)
  2. 通过道具将其明确传递(可能会很乏味,但这是最直接和最明确的方式)
  3. 通过上下文隐式地将其传递(非常简单,但是您将要处理一个不稳定的API,API可能会发生变化,因此这取决于您的良心)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何响应Redux中的状态更改并调度其他操作?

如何使用超时调度Redux操作?

如何使用超时调度Redux操作?

无法在Typescript中调度redux操作

在Redux中调度清除状态操作

如何修复“错误:Reducers 可能无法调度操作”。在我的 ReactJS Redux 应用程序中?

在 redux 中的 mapDispatchToProps 中的调度操作之前运行函数

如何在Redux中调度函数?

我如何从类而不是组件调度 redux 操作

Redux-调度在操作中未定义

在自定义serviceWorker中调度redux操作

等待redux操作完成调度

如何获得调度Redux

以redux形式通过服务器端验证后,立即调度操作

在Redux Observable中完成所有操作后,调度一个操作

我如何保证在React中链接Redux / Sagas调度?

在redux中间件中如何访问调度?

React & Redux:调度操作不起作用

在调度操作之前调用 API - Redux Toolkit

调度Redux操作是否被视为昂贵?

Redux Promise中间件如何反应将结果操作发送到调度?

如何将简单的Formik表单与Redux存储连接并调度操作?

使用redux-offline时如何添加要调度的操作而不是有效的url

React操作如何访问调度?

为什么我在Redux中的调度函数得到的是函数而不是操作?

在中间件中调度redux操作会导致意外行为

什么时候应该在Redux中调度异步操作?

无法在 axios 成功响应拦截器中调度 redux 操作

C# - 在没有计时器的情况下在 Windows 服务中调度多个操作