对于为清除部分状态而想出的解决方案,我有些怀疑。
我有一个名为“书”的页面,在这里我可以得到一堆书。每个书对象都包含该页面所需的最少信息。当用户单击一本书时,他们将被重定向到一个书页面,我将在其中获取完整的书信息。
我的状态如下:
@State<any>({
name: 'books',
defaults: {
books: [],
selectedBook: null
}
})
当用户离开单个书页时,我想清除selectedBook
,因为(至少对我来说)进入应用程序的其他部分感觉很奇怪,但仍然有一个{{ 1}}。
我想知道如何实现这一目标,而我能想到的最佳解决方案是在selectedBook
路线上从ClearSelectedBook
后卫派遣一个CanDeactivate
行动。
这是正确的方法吗?如果没有,还有其他替代方法吗?
答案 0 :(得分:1)
不确定是否有正确的方法,但是另一种方法是使用NGXS Router Plugin
状态可以处理RouterNavigation
动作,并查看动作有效负载-如果它已经离开单个书页,则清除该状态中的selectedBook
值。
已经说过-您使用显式动作的方法有其优点(恕我直言)-不过,我可以将其重命名,也许重命名为UserLeftBookPage
..然后让状态对此做出响应。而不是指示响应的操作名称。使用显式操作而不是使用路由器,编写测试也更加简单。