加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

angular – 我的ngrx商店如何检测服务器端的变化?

发布时间:2020-12-17 08:52:17 所属栏目:安全 来源:网络整理
导读:我最近将ngrx存储添加到我现有的angular2应用程序中,以简化代码并维护共享状态. 但是我对一部分感到困惑,我在开始时从服务器更新了我的状态,在病房之后我只是在没有检查服务器的情况下处理状态.那么当后端的某些东西发生变化时会发生什么?我每次检查它,我去
我最近将ngrx存储添加到我现有的angular2应用程序中,以简化代码并维护共享状态.
但是我对一部分感到困惑,我在开始时从服务器更新了我的状态,在病房之后我只是在没有检查服务器的情况下处理状态.那么当后端的某些东西发生变化时会发生什么?我每次检查它,我去那个页面还是有更好的方法?
基本上,我想知道确保更新状态数据以显示服务器数据的最佳做法是什么?
建议使用 NGRX Effects.当您将NGRX效果与Store一起实施时,任何HTTP副作用都由效果处理,效果反过来将使用商店中的操作来更新数据. Effect侦听Action并使用Action的有效内容执行副作用(HTTP).当效果完成时,它会使用新的有效负载调用新的Action(成功的Action或失败的操作),从而更新Store中的数据.

在example in the Effects docs中,它显示了登录效果:

@Injectable()
export class AuthEffects {
  constructor(
    private http: Http,private actions$: Actions
  ) { }

  @Effect() login$= this.actions$
      // Listen for the 'LOGIN' action
      .ofType('LOGIN')
      // Map the payload into JSON to use as the request body
      .map(action => JSON.stringify(action.payload))
      .switchMap(payload => this.http.post('/auth',payload)
        // If successful,dispatch success action with result
        .map(res => ({ type: 'LOGIN_SUCCESS',payload: res.json() }))
        // If request fails,dispatch failed action
        .catch(() => Observable.of({ type: 'LOGIN_FAILED' }))
      );
}

在此示例中,Login for Login侦听LOGIN操作.发生LOGIN操作时,它使用操作的有效负载并执行HTTP POST.当HTTP POST返回时,它会使用有效负载的json响应调用操作LOGIN_SUCCESS,或者返回LOGIN_FAILED操作.

这样,您的商店始终处于任何副作用的循环中,例如HTTP.如果一个组件更新数据库中的记录,则效果应通知存储,以便订阅该数据的所有组件都获得更新的数据.

希望有所帮助.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读