gpt4 book ai didi

javascript - 如何设计商店(应用程序状态)以便我们直接更改商店中的数据而无需操作, reducer ?

转载 作者:行者123 更新时间:2023-11-29 23:11:58 25 4
gpt4 key购买 nike

原因:即使是简单的操作,Action 也会引入巨大的样板。它使简单的代码变得复杂。

目标:例如

interface Contact {
name: string,
id: string,
}
interface State {
c1:Contact;
c2:Contact;
}
let store: MyStore<State>;

store.operateOn(['c1'],(c:Contact)=>c.name='New name'); //['c1'] denotes path to contact

所以在 store.operateOn() 执行之后,一个真正的状态改变将会发生并且 有关订户将收到通知。

总结:有没有像db这样的ngrx/store可以让我们直接/间接更改数据而不需要任何操作。

最佳答案

我创建了一个库来执行此操作。它叫做ng-app-state ,它是 @ngrx/store 的包装器。在您的示例中,您将使用如下命令更新商店:

store('c1')('name').set('New name');

它还提供了一个类似的界面来观察商店在任何级别的变化。例如。观察 c1 使用

的所有变化
store('c1').$.subscribe(...);

为此,您按如下方式定义 MyStore 服务:

@Injectable()
export class MyStore extends AppStore<State> {
constructor(store: Store<any>) {
super(store, "myState", new State());
}
}

当然,您的应用程序模块中也有一些设置。在 GitHub 页面了解更多信息:https://github.com/simontonsoftware/ng-app-state

关于javascript - 如何设计商店(应用程序状态)以便我们直接更改商店中的数据而无需操作, reducer ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53727304/

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