将react-redux集成到现有的Angularjs应用程序中

时间:2016-05-31 21:15:56

标签: angularjs reactjs refactoring redux react-redux

我正在考虑将react-redux整合到Angularjs的3年代码库中。我不希望立即重构所有代码库,而是通过我的团队将开发的新功能逐步引入react-redux。

  1. 有没有最佳做法? (任何资源将不胜感激)
  2. 旧功能(用ng编写)是否包含react-redux部件或者我必须重写它?
  3. 如何避免执行相同的API调用? (如果两者都需要相同的资源)
  4. 我应该一起避免改变吗?

2 个答案:

答案 0 :(得分:2)

  1. 我不知道任何特定的最佳实践,但我最近开始在我当前的Angular 1.5应用程序中使用ng-redux(https://hacks.mozilla.org/2015/05/es6-in-depth-template-strings-2/)到目前为止效果很好。在保持Angular核心的同时,从Redux获得单向数据流和结构化状态管理的好处真的很不错。这也可以让您逐步迁移一个实体模型。虽然我自己没有使用它,但我发现https://github.com/angular-redux/ng-redux可用于在Angular指令中包装React组件。如果你想最终完全使用react-redux独立产品,这可能是一个很好的垫脚石。
  2. 将ng-redux集成到现有功能中需要进行一些重构,但如果您已经为控制器外部的数据维护模型,那也不算太糟糕。 Ng-redux允许您直接从控制器调用Action Creator函数,这通常会取代UI动作事件处理程序。
  3. 使用ng-redux时,您可以使用带有redux-thunk的异步操作轻松进行API调用。您可以使用现有的Angular服务来请求您的API,然后使用响应来发送标准的Action来更新状态。
  4. 我认为至少要整合ng-redux来标准化应用程序的数据流是绝对值得的。它将有助于更好地组织您的项目,并可能根据您的重构方式提高性能。虽然ngReact的好处对我来说不太清楚,除非你想要慢慢转换组件,直到你完全放弃Angular核心。

答案 1 :(得分:0)

我已经成功迁移了我在原始问题中指出的 brown-field 限制下的应用程序。

解决方案基于两种方法:

  1. 小组件 - 是非常包含的组件。例如,通知下拉列表。
  2. 我无法迁移的App的整个部分 - 基本上仍然是以Angular编写的一些路径/视图。
  3. 两者都使用了与此处建议的技术相似的技术: http://softeng.oicr.on.ca/chang_wang/2017/04/17/Using-AngularJS-components-directives-in-React/?utm_source=reactnl&utm_medium=email

    提示:如果正确管理Angular依赖项,则会容易得多。