假设我有一个不了解Redux的地理定位服务,我将其配置如下:
backgroundGeoLocation.configure(
callback // will be called with an argument when the coordinates change
);
最简单的方法是使服务回调调度Redux操作而不从单独的模块导出store
并使用store.dispatch()
(因为这将是一个单例)?
答案 0 :(得分:11)
如果要将某些值传递给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 :(得分:1)
如果您不想callbackFn
了解store.dispatch
,那么您必须从{{创建事件流或 Observable 之类的内容1}}。完成后,您只需将流映射到callbackFn
函数。
您可以使用任何lib来创建流,但我建议使用Rx
在这种方法中,你必须得到类似的东西:
store.dispatch