我使用的是redux-observable,在我的史诗中我使用browserHistory.push改变其中一些路线。这是标准/良好做法吗?我的直觉告诉不,但是需要你的意见。除了升级到react-router 4之后,我无法访问browserHistory,我该怎么做?是可以改变路线编程方式在可观察到的史诗内
1
A
回答
1
必须呼吁browserHistory.push()
是完全没问题的。如果它适用于您的用例,并且您不需要知道减速器中的路由更改,继续!
这就是说,“纯粹”的方式将是你的史诗般的发出一个动作,将导致路线变化。这可以在react-router v4中使用新的react-router-redux来完成,它取代old one with the same name。
添加后,您可以使用所提供的行动创造者:
import { push } from 'react-router-redux';
export const somethingEpic = action$ =>
action$.ofType(SOMETHING)
.switchMap(() => {
somethingLikeAjaxOrWhatever()
.mergeMap(response => Observable.of(
somethingFulfilled(response),
push('/success-page')
))
});
需要明确的是,push()
replace()
等在反应路由器,终极版是行动的创作者 - 又名行动工厂。它们本身并不会真正导致路线改变,或者完全没有任何副作用。他们返回需要发送的行动,以便改变路线。
使用动作来表示路由改变意图的另一个好处是可测试性。你不再需要模拟一个历史API,你可以断言史诗会发出预期的动作。这就是所谓的“作为数据的效果”,因为你的代码没有执行实际的副作用,你只是产生了意图。
相关问题
- 1. 可重复观察史诗与多个过滤器
- 2. 在哪里我可以找到教程在雷克斯观测谷歌史诗?
- 3. 是否可以通过发布动作来启动/停止/恢复可重复观察的史诗?
- 4. 观察员可以观察多个可观察物吗?
- 5. 观察可观察范围内的所有属性更改
- 6. 水豚/观察html5 /历史路线变化
- 7. 过滤器可观察到的由可观察到的
- 8. 可观察到流
- 9. Java - 观察模式 - 观察一个班级,但可以访问另一个班级正在观察的内容
- 10. 如何以编程方式更新复杂的基因敲除可观察性?
- 11. Knockout.js:更改可观察到的值不会改变HTML
- 12. Flex:changewatcher可以观察多个变量吗?
- 13. knockoutjs - 可观察到的可观察值的对象的observableArray
- 14. Angular - 修改可观察值
- 15. 观察工厂可变
- 16. 可观察 - 将2个承诺转换为可观察到的
- 17. RxJava combineLatest - 从变化中可观察到
- 18. 可观察到的序列
- 19. 可观察到的转换
- 20. 可选择的可观察模式?
- 21. 是否可以在运行时观察变量?
- 22. java mvc可观察模式
- 23. 在KnockoutJS中计算也可以是可观察的
- 24. 如何为所有可重复观察的史诗添加全局错误处理程序?
- 25. 澄清RxJava可观察线程与改造
- 26. 以编程方式柔化颜色边框,可能是渐变,可编程
- 27. 创建史诗下的史诗
- 28. 添加到具有备用线程的可观察集合
- 29. Java - 是否有可能以这种方式使用观察者模式和线程?
- 30. Java观察者和可观察的
我正在使用react-router-redux,但是在升级软件包后它停止工作,而新版本仍然是测试版,所以我对使用它有点犹豫。 –
完全可以理解。不幸的是,现在你必须在react-router @ 4和react-router-redux @ 5或react-router @ 3和react-router-redux @ 4之间进行选择。所以如果你不想使用react-router-redux的测试版,你必须使用react-router @ 3。无论选择哪种方式,我的答案都适用,因为您会将操作发送给过渡。 Btw可重复观察仍然是测试版;) – jayphelps
@tmpdev是否回答了您的问题? – jayphelps