javascript – 如何从不知道Redux的服务调度动作?

前端之家收集整理的这篇文章主要介绍了javascript – 如何从不知道Redux的服务调度动作?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
假设我有一个不知道Redux的地理定位服务,我将其配置如下:
backgroundGeoLocation.configure(
  callback // will be called with an argument when the coordinates change
);@H_502_3@ 
 

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

解决方法

@H_403_9@ 如果要将某些值传递给JavaScript中的某段代码,则需要使用函数.
例如,
function createGeoLocationService(store) {
  let backgroundGeoLocation = new BackgroundGeoLocation()
  backgroundGeoLocation.configure(coordinates => {
    store.dispatch({ type: 'UPDATE_COORDINATES',coordinates })
  })
  return backgroundGeoLocation
}@H_502_3@ 
 

现在,无论您在何处创建商店,都要创建该服务:

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

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

>将其设为单身(是的,不是您想要的,但对于仅限客户的应用来说,这是一个有效的选项)
>通过道具明确传递它(可能会变得单调乏味,但这是最直接和明确的方式)
>通过上下文隐式传递它(非常简单,但你将处理unstable API that is subject to change,所以这是你的良心)

猜你在找的JavaScript相关文章