Javascript 如何从不知道Redux的服务中分派操作?
假设我有一个不知道Redux的地理定位服务,我将其配置为:Javascript 如何从不知道Redux的服务中分派操作?,javascript,redux,Javascript,Redux,假设我有一个不知道Redux的地理定位服务,我将其配置为: backgroundGeoLocation.configure( callback // will be called with an argument when the coordinates change ); 如果不从单独的模块导出store,并且不使用store.dispatch()(因为这将是一个单例),让服务回调分派Redux操作的最干净的方法是什么?如果要在JavaScript中向某段代码传递一些值,则需要使用函数。
backgroundGeoLocation.configure(
callback // will be called with an argument when the coordinates change
);
如果不从单独的模块导出
store
,并且不使用store.dispatch()
(因为这将是一个单例),让服务回调分派Redux操作的最干净的方法是什么?如果要在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)
如果需要在组件中访问它,可以:
如果您不想
callbackFn
知道store.dispatch
,则必须从callbackFn
创建类似事件流或可观察的内容。完成后,只需将流映射到store.dispatch
函数
您可以自由使用任何库来创建流,但我建议
在这种方法中,您必须提供以下内容:
var geoLocation$ = new Rx.Subject();
var newCoordinatesAction = coordinates => ({
type: "YOUR_TUPE",
payload: coordinates
});
geoLocation$.map(newCoordinatesAction).map(store.dispatch);
backgroundGeoLocation.configure(::geoLocation$.onNext);
请注意,
react redux
中的
使用了“通过上下文隐式传递”技术,因此,如果您正在使用redux,您已经在不知不觉中“处理不稳定的API”。@AnsonKao当不稳定的API发生变化时,您不需要更改应用程序。我们对你隐瞒它的用途。