MobX - 如何在商店之间进行沟通?
MobX - how to comunicate between stores?
在我的应用程序中,我有两个 MobX 存储 - store_A 用于处理用户信息(当前登录的用户等),store_B 用于处理所有用户的事件。
用户登录后,我想显示有关该用户的所有事件。
我如何从 store_B 中访问记录的用户信息(来自 store_A)以便我可以正确过滤事件?
此时我必须将 loggeduserName 数据存储在我的 store_b 中以检索该数据...
来自我的活动商店的代码:
class ObservableEventsStore {
...
//after logIn, save userName:
@action setUser(userName) {
this.givenUser = userName
}
...
@computed get filteredByUser() {
let filteredByUser = this.wholeList
.filter((event) => this.givenUser === event.user)
// this.givenUser is what i want to get from store_A
return filteredByUser
}
我想从 UserStore 获取 loggedUser
数据,我也把它存储在那里...
没有惯用的方法,任何获取 userStore 引用的方法都是有效的。我认为通常您可以采用三种方法来实现这一点:
- 在 EventStore 之前构造 userStore 并在其构造函数中传递对 EventStore 的引用(或之后设置)
- 如果UserStores是单例的,直接导入使用即可
- 使用像 InversifyJS 这样的依赖注入系统
在我的应用程序中,我有两个 MobX 存储 - store_A 用于处理用户信息(当前登录的用户等),store_B 用于处理所有用户的事件。
用户登录后,我想显示有关该用户的所有事件。
我如何从 store_B 中访问记录的用户信息(来自 store_A)以便我可以正确过滤事件?
此时我必须将 loggeduserName 数据存储在我的 store_b 中以检索该数据...
来自我的活动商店的代码:
class ObservableEventsStore {
...
//after logIn, save userName:
@action setUser(userName) {
this.givenUser = userName
}
...
@computed get filteredByUser() {
let filteredByUser = this.wholeList
.filter((event) => this.givenUser === event.user)
// this.givenUser is what i want to get from store_A
return filteredByUser
}
我想从 UserStore 获取 loggedUser
数据,我也把它存储在那里...
没有惯用的方法,任何获取 userStore 引用的方法都是有效的。我认为通常您可以采用三种方法来实现这一点:
- 在 EventStore 之前构造 userStore 并在其构造函数中传递对 EventStore 的引用(或之后设置)
- 如果UserStores是单例的,直接导入使用即可
- 使用像 InversifyJS 这样的依赖注入系统