gpt4 book ai didi

javascript - NGXS 状态不变

转载 作者:太空狗 更新时间:2023-10-29 18:23:02 25 4
gpt4 key购买 nike

可能有人知道为什么 NGXS 状态不能在 HttpClient POST 请求中改变。

ctx.patchState()

仅适用于 HTTP POST 请求之外。

    @Action(SignIn)
signin(ctx: StateContext<AppStateModel>, { payload }: SignIn) {

// ctx.patchState({isLoggedIn:true}) this works!

return this.api$.signin(payload)
.pipe(
tap((user: User) => {
console.log(user);
ctx.patchState({ isLoggedIn: true })

})
)
.subscribe(
(user: User) => {
ctx.patchState({ isLoggedIn: true })

}
)
}

最佳答案

实际上,状态正在发生变化,但您没有看到,因为您返回了尚未完成的订阅。换句话说 - 一旦返回的可观察对象的订阅完成,您将看到正在调度的操作。

如评论中所述,操作返回的可观察对象正在后台订阅,因此无需再次订阅。

话虽如此,您可以在管道中传递 take(1)

它的作用,触发一次后就完成了对observable的订阅。

    @Action(SignIn)
signin(ctx: StateContext<AppStateModel>, { payload }: SignIn) {
return this.api$.signin(payload)
.pipe(
take(1), // <-- Add that
tap((user: User) => ctx.patchState({ isLoggedIn: true }))
);
}

关于javascript - NGXS 状态不变,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52029547/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com