Reactjs 提供的可观测误差“redux”;假;预计会有溪流的地方
我有这样的文件epic(redux observable):Reactjs 提供的可观测误差“redux”;假;预计会有溪流的地方,reactjs,react-native,rxjs,observable,redux-observable,Reactjs,React Native,Rxjs,Observable,Redux Observable,我有这样的文件epic(redux observable): export const intervalChartEpic = (action$, store) => action$.ofType(FETCHING_CHART_DATA_ONE_DAY_SUCCESS) .filter(() => (store.getState().currentPeriod === PERIOD_ONE_DAY)) .mergeMap(() => Observable .
export const intervalChartEpic = (action$, store) =>
action$.ofType(FETCHING_CHART_DATA_ONE_DAY_SUCCESS)
.filter(() => (store.getState().currentPeriod === PERIOD_ONE_DAY))
.mergeMap(() => Observable
.interval(10000)
.takeUntil(store.getState().currentPeriod !== PERIOD_ONE_DAY)
.switchMap(() => ajax.getJSON(updateChartOneDayUrl(store))
.map(response => fetchIntervalChartDataSuccess(response))
.catch((err) => {
console.log('============Position 1============');
console.log(err);
return Observable.of(fetchChartDataFailure(err));
})
)
.catch((err) => {
console.log('============Position 2============');
console.log(err);
return Observable.of(fetchChartDataFailure(err));
});
);
它产生了一个错误
"You provided 'false' where a stream was expected. You can provide an Observable, Promise, Array, or Iterable."
位置2处出错,这意味着它在
switchMap()
Function处出错,我不知道为什么,这里有人能帮我吗??,非常感谢 问题实际上不是您的开关映射的问题,而是您的takeUntil
.takeUntil(store.getState().currentPeriod !== PERIOD_ONE_DAY)
您正在将一个布尔值作为参数传递给takeUntil
公共接收(通知者:可观察):可观察
虽然有相当复杂的方法获取流,直到存储的状态更改为特定值,但在实践中,我发现它们是反模式的。相反,倾听动作的声音,该动作描述了改变该状态的意图,无论该动作是什么
.takeUntil(
action$
.ofType(CHANGE_PERIOD)
.filter(action => action.currentPeriod !== PERIOD_ONE_DAY)
)
如果你真的想得到一个状态流,一种方法是创建它并将它注入到你所有的史诗中。这需要最新版本的redux observable
要注入依赖项,可以使用createEpicMiddleware的依赖项
配置选项
你可以这样使用它:
.takeUntil(
state$.filter(state => state.currentPeriod !== PERIOD_ONE_DAY)
)
目前还不清楚哪种方法更“正确”。状态流当然更容易,但我有一些耦合和时间方面的顾虑,这使我无法将其实际包含在redux observable中。我也最担心的是它会成为一把猎枪——让做坏事变得如此容易。问题实际上并不在于你的开关映射,而是你的直到
.takeUntil(store.getState().currentPeriod !== PERIOD_ONE_DAY)
您正在将一个布尔值作为参数传递给takeUntil
公共接收(通知者:可观察):可观察
虽然有相当复杂的方法获取流,直到存储的状态更改为特定值,但在实践中,我发现它们是反模式的。相反,倾听动作的声音,该动作描述了改变该状态的意图,无论该动作是什么
.takeUntil(
action$
.ofType(CHANGE_PERIOD)
.filter(action => action.currentPeriod !== PERIOD_ONE_DAY)
)
如果你真的想得到一个状态流,一种方法是创建它并将它注入到你所有的史诗中。这需要最新版本的redux observable
要注入依赖项,可以使用createEpicMiddleware的依赖项
配置选项
你可以这样使用它:
.takeUntil(
state$.filter(state => state.currentPeriod !== PERIOD_ONE_DAY)
)
目前还不清楚哪种方法更“正确”。状态流当然更容易,但我有一些耦合和时间方面的顾虑,这使我无法将其实际包含在redux observable中。我也最担心的是它会成为一把猎枪——让做坏事变得如此容易