标签: angular-state-managmement

如何在NGXS中使用patchState vs setState?

我学习ngxs但是当我应该用我无法理解patchStatesetState?有什么不同?

const state = ctx.getState();
let data =  this.service.list();
ctx.setState({
    ...state,
    feedAnimals: data
});
Run Code Online (Sandbox Code Playgroud)

let data =  this.service.list();
ctx.patchState({
    feedAnimals: data
});
Run Code Online (Sandbox Code Playgroud)

state-management ngxs angular-state-managmement

9
推荐指数
2
解决办法
4770
查看次数

为什么在组件中直接访问 Akita Queries

我正在学习 Akita 以向 Angular 应用程序添加状态管理。在查看Akita 文档中的架构图Akita GitHub 存储库中的示例(例如示例)时,我看到 Query 是直接在组件中访问的。我很惊讶地看到这一点,因为我预计应用程序的状态管理部分将隐藏在服务后面,并从消费者(即组件)中抽象出来。与 Query 不同的是,Store 隐藏在 Service 后面,不能直接在组件中访问。在我看来,如果 Query 隐藏在 Service 后面,就像 Store 隐藏在 Service 后面一样,那么消费者只需要为每个数据源导入一件事,即服务。

所以我的问题是为什么 Akita 希望我们直接在组件中访问 Query 而不是 Store?将 Query 隐藏在服务背后是否有不利之处?

angular angular-akita angular-state-managmement

3
推荐指数
1
解决办法
397
查看次数

当状态发生变化而不发生突变时,Angular 会重新渲染组件列表

我来自 React,现在我已经使用 Angular 工作了几个月了。React 组件在重新渲染时仅更新必要的 HTML,而 Angular 组件在状态未发生变化时似乎会完全重新渲染。如果我直接改变状态似乎工作得很好。

这是我的非常基本的例子:

我有保存状态的主要组件:

items = [{ name: "John", age: 8 }, { name: "Jane", age: 20 }];
Run Code Online (Sandbox Code Playgroud)

在它的视图中它呈现一个项目列表:

items = [{ name: "John", age: 8 }, { name: "Jane", age: 20 }];
Run Code Online (Sandbox Code Playgroud)

item组件如下所示:

@Component({
  selector: "item",
  template: `
    <p>
      {{ item.name }}, {{ item.age }}
      <input type="checkbox" />
    </p>
  `
})
export class ItemComponent {
  @Input() item: any;
}
Run Code Online (Sandbox Code Playgroud)

我在项目组件中添加了该复选框,只是为了注意到组件何时完全重新渲染。

所以我要做的就是勾选复选框并age为该州的每个用户增加 。

如果我通过改变状态来增加它,视图将按预期更新并且复选框保持选中状态:

this.items.forEach(item => {
  item.age++;
}); …
Run Code Online (Sandbox Code Playgroud)

javascript angular angular-state-managmement

2
推荐指数
1
解决办法
5795
查看次数