1

非常基本的问题,谷歌没有帮助。

我的主要会议有一家秋田商店。它有这个状态

    export interface SessionState {
      language: Language;
      activeRepo: number;
      auth_token: string;
      user : AppUser
      userRepos : UserRepo[]
    }

我怎样才能在服务中只更新这些属性中的一个?例如,仅“userRepos”

我有这个服务电话

 getUserRepos() {
      return httpclient.post("User","GetRepos", {}).pipe(tap<UserRepo[]>(repos  => {
           // THIS IS THE LINE THAT I CANNOT GET TO WORK--->
             this.sessionStore.update({...userRepos : repos});
      }));
 }

我已经尝试了很多结构,但我无法得到它。是否有可能只更新一部分状态?

4

3 回答 3

1

对于 EntityStore,存在具有不同变体的 update() 函数。

myStore.update(currentValue => {
      return {
        propery1: {
          ...currentValue.propery1,
          propertyWithUpdate: {
            ...currentValue.propery1.propertyWithUpdate,
            field1: "new_value1",
            field5: "new_value5"
          }
        }
      };
于 2020-11-05T18:31:47.413 回答
0
getUserRepos() {
 return httpclient.post("User","GetRepos", {}).pipe(tap<UserRepo[]>(repos  => {
      this.sessionStore.update({ userRepos: repos});
 }));
 }

只需删除传播。

于 2019-11-22T13:58:22.663 回答
0

您无需发出 POST 请求即可更新秋田状态。您可以使用javascript 解构来仅更新商店的一个属性。像这样:

    this._sessionStore.update(state => ({
      ...state,
      userRepos: repos,
    }));

这将获取状态对象并分配相同的先前状态值(解构),将 userRepos 属性更改为传递的值。

于 2021-08-23T10:17:18.683 回答