【发布时间】:2019-12-02 06:36:06
【问题描述】:
我使用 react 和 redux 创建了一个应用程序。其中我使用 getState() 来获取商店的状态,并像这样通过破坏来获取特定的切片。
const { user } = getState();
现在我想转到 Angular 6 中的应用程序。我安装了 ngrx v6.0。我阅读了文档,但没有找到获取用户切片的方法。 但是,我认为我可以通过创建这样的选择器来实现这一目标
export const selectUser = (state: AppState) => state.user;
但我需要订阅该选择器并像这样获取用户状态。
this.store.pipe(select(fromRoot.selectUser)).subscribe(
user => this.user = user
)
我需要像下面这样创建手动功能吗?
function getState(store: Store<State>): State {
let state: State;
store.take(1).subscribe(s => state = s);
return state;
}
有人可以为此提供最佳解决方案还是我错过了什么?
我还面临创建选择器的另一个问题。我使用有效负载 userData 发送一个动作(来自 API 响应) AppComponent@ngOnInit() this.store.dispatch(new LoadUserAction(this.userData));
但是当我使用用户选择器在功能模块的组件中获取用户状态片时 HomeComponent@ngOnInit()
this.store.pipe(select(fromRoot.selectUser)).subscribe(
user => this.user = user //user is same as intial not the updated one.
)
我没有立即获得数据。始终返回初始状态。
我需要使用效果还是放置一些 if 条件?
有人可以向我解释在从第一个选择器获取正确数据后如何执行另一个操作吗?
【问题讨论】:
-
你想获取组件中的数据还是视图中的数据?
-
在组件中。我想先修改数据,设置组件的属性值。
-
我认为我们在这里缺少一些链接。您的第一个问题是是否可以立即到达商店。最好创建另一个关于为什么您的选择器无法正常工作的问题并提供更多代码。您是否为该调度的操作使用效果?你只有减速机吗?
-
我现在只使用减速器。这是另一个问题的链接。 stackoverflow.com/questions/57182646/…
标签: angular reactjs typescript redux ngrx