首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NGXS调度取消来自另一个菜单的http请求。

NGXS调度取消来自另一个菜单的http请求。
EN

Stack Overflow用户
提问于 2022-08-01 15:16:29
回答 1查看 63关注 0票数 0

我遇到了使用NGXS的奇怪情况,例如,我有3个菜单:

ondestroy()

  • Menu
  1. 菜单销售>调用http获取销售数据>在客户中具有unsubsribe功能>在ondestroy()
    1. Menu设置中具有unsubsribe函数,默认年份中=>有调度()方法,但没有http请求数据

违约年

代码语言:javascript
复制
       this.store.dispatch(new SetYear(
        {
            year:'2022'                
        }))   .subscribe(
            data => {
                console.log('success default year')
            },
            error => {
                console.log('error')

            }
        );

user.state.ts

代码语言:javascript
复制
     @Action(SetYear,{ cancelUncompleted: true })
     SetYear(ctx: StateContext<UserStateModel>, action: SetYear) {
        const state = ctx.getState();
        ctx.setState({
          ...state,
          users: [{
            ...state.users[0],
            ...action.payload
         }] 
       });
      }

首先是sales菜单,其次是customer菜单,最后是设置默认年份菜单,然后使用调度()默认年份,但是http和http再次被调用。为什么会发生这种事?什么是解决办法?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-08-24 07:03:01

我解决了我的问题。在ngonInit()中的sales和customer组件中,我读取ngxs存储,给变量赋值并调用http请求

customer.component.ts : methode ngOnInit()

在此之前

代码语言:javascript
复制
 this.users$.subscribe(async(data) => {
         let idstore = data[0].idstore;
         this.getCustomers(idstore) // call http request
    })

之后

代码语言:javascript
复制
   this.users$.pipe(
        take(1) //=> code solution pipe+take
      ).subscribe(async(data) => {
         let idstore = data[0].idstore;
         this.getCustomers(idstore) // call http request
    })

那是完美的

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73195936

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档