清除部分状态
Clear part of the state
我对我想出的清除部分状态的解决方案有点怀疑。
我有一个名为 "Books" 的页面,我在其中找到了一系列书籍。每个书籍对象都包含该页面所需的非常少的信息。当用户点击一本书时,他们会被重定向到一个单独的书页,我会在其中获取完整的书本信息。
我的状态是这样的:
@State<any>({
name: 'books',
defaults: {
books: [],
selectedBook: null
}
})
当用户离开单个书页时,我想清除 selectedBook
因为感觉很奇怪(至少对我来说)在应用程序的其他部分仍然有selectedBook
闲逛。
我想知道如何实现这一点,我能想到的最佳解决方案是从 books/:id
路线上的 [=14=] 守卫派遣 ClearSelectedBook
动作。
这里是 demo on StackBlitz。
这是正确的方法吗?如果不是,还有哪些其他选择?
不确定是否有 正确的 方法,但另一种方法是使用 NGXS Router Plugin
状态可以处理 RouterNavigation
动作,并查看动作负载 - 如果它已经离开单个书页,则清除状态中的 selectedBook
值。
话虽如此 - 你使用显式操作的方法有它的优点(恕我直言) - 我可能会重命名它,也许是 UserLeftBookPage
.. 然后让国家对此做出回应。而不是指示响应的操作名称。使用显式操作而不是利用路由器编写测试也更直接一些。
我对我想出的清除部分状态的解决方案有点怀疑。
我有一个名为 "Books" 的页面,我在其中找到了一系列书籍。每个书籍对象都包含该页面所需的非常少的信息。当用户点击一本书时,他们会被重定向到一个单独的书页,我会在其中获取完整的书本信息。
我的状态是这样的:
@State<any>({
name: 'books',
defaults: {
books: [],
selectedBook: null
}
})
当用户离开单个书页时,我想清除 selectedBook
因为感觉很奇怪(至少对我来说)在应用程序的其他部分仍然有selectedBook
闲逛。
我想知道如何实现这一点,我能想到的最佳解决方案是从 books/:id
路线上的 [=14=] 守卫派遣 ClearSelectedBook
动作。
这里是 demo on StackBlitz。
这是正确的方法吗?如果不是,还有哪些其他选择?
不确定是否有 正确的 方法,但另一种方法是使用 NGXS Router Plugin
状态可以处理 RouterNavigation
动作,并查看动作负载 - 如果它已经离开单个书页,则清除状态中的 selectedBook
值。
话虽如此 - 你使用显式操作的方法有它的优点(恕我直言) - 我可能会重命名它,也许是 UserLeftBookPage
.. 然后让国家对此做出回应。而不是指示响应的操作名称。使用显式操作而不是利用路由器编写测试也更直接一些。