路线激活后如何缓存组件

时间:2019-02-23 12:43:41

标签: javascript angular typescript caching angular-ui-router

我有3个组成部分。
1个父级组件和2个子级组件,带有路由器出口,因此,每当调用其路由时,子组件均处于活动状态(使用服务共享数据)。

我对这两个子组件都有复杂的看法。

当我在这两条路线之间切换时,渲染视图需要太多时间。 (我已经使用了一些引导UI,ngbootstrap和其他一些库)

我的数据在这2个子组件之间没有变化,仅查看零件更改需要花费时间。

所以我想知道一旦调用它们,是否有任何方法可以缓存该组件?改善性能?

提前谢谢。

1 个答案:

答案 0 :(得分:0)

这是一个好问题,我从未使用过,但是您可以使用RouteReuseStrategy来实现。您没有提供具体示例,但通常需要使用以下方法:

  • 应该附加-返回true / false ,以确定是否将调用 retrieve 方法来获取组件,而不是从头开始创建。< / li>
  • 检索-返回RouteHandle或返回null (如果已调用)-它可以将已保存(缓存)组件作为 DetachedRouteHandle 返回 strong>。
  • 应该分离-返回true / false ,以确定是否调用 store 方法。
  • 存储-不返回任何内容,但接受 detachedTree ,您可以保存(缓存)来存储组件状态并从 retrieve 方法进一步返回。

这听起来很复杂,但比将 router-outlet 替换为某些自定义商品要容易得多。 Here is这个家伙描述得很好,并提供了一个例子。希望有帮助。