将 ngrx 集成到我的代码中
Integrate ngrx into my code
我正在尝试了解如何将 ngrx 添加到我当前的项目结构中。
我已经了解了 ngrx/reflux 的所有概念。不过,我不太明白如何重建项目结构以便将其集成到我的项目中。
- 我需要在哪里添加减速器?
- 我需要在哪里添加状态?
- 行动呢?
- Store 应该在服务的哪个位置注入到每个组件中?
- 何时何地从服务器获取数据?
那边有什么项目结构最佳实践吗?
首先,您应该查看 @ngrx/store
文档:https://github.com/ngrx/store#setup
我做了一个小的(有趣的)项目来演示如何使用:
- angular
- ngrx/store
- ngrx/effects
- normalized state
- selectors
你可以在这里找到它:https://github.com/maxime1992/pizza-sync
为您提供一些有关其工作原理的信息:
- core.module.ts 是我声明我的根减速器
- root.reducer.ts is were I build the root reducer and compose it with middlewares 根据 dev/prod env
- 对于 reducer,我保留每个 related part together(接口 + reducer + 效果 + 选择器)
然后在组件内访问 store 只需像 that :
注入商店:
constructor(private _store$: Store<IStore>) { }
从其中一个获取数据
a) 选择器 (ex)
this._pizzasCategories$ = this._store$.let(getCategoriesAndPizzas());
b) 直接来自商店(例如)
this._idCurrentUser$ = this
._store$
.select(state => state.users.idCurrentUser);
注意我没有 subscribe
这意味着我在我看来使用 async
管道所以 angular 为我订阅 Observable。
但当然你也可以手动完成并在你的 ts 中使用订阅。
PS: 我将发布一个启动器,其中包含所有已设置的内容,以避免浪费时间在开始一个新项目时。我将尝试在本周发布它,并在完成后立即更新此 post。或许对你有帮助。
编辑 2017 年 5 月 12 日
晚了,但我终于发布了首发:) !
https://github.com/maxime1992/angular-ngrx-starter
我正在尝试了解如何将 ngrx 添加到我当前的项目结构中。
我已经了解了 ngrx/reflux 的所有概念。不过,我不太明白如何重建项目结构以便将其集成到我的项目中。
- 我需要在哪里添加减速器?
- 我需要在哪里添加状态?
- 行动呢?
- Store 应该在服务的哪个位置注入到每个组件中?
- 何时何地从服务器获取数据?
那边有什么项目结构最佳实践吗?
首先,您应该查看 @ngrx/store
文档:https://github.com/ngrx/store#setup
我做了一个小的(有趣的)项目来演示如何使用:
- angular
- ngrx/store
- ngrx/effects
- normalized state
- selectors
你可以在这里找到它:https://github.com/maxime1992/pizza-sync
为您提供一些有关其工作原理的信息:
- core.module.ts 是我声明我的根减速器
- root.reducer.ts is were I build the root reducer and compose it with middlewares 根据 dev/prod env
- 对于 reducer,我保留每个 related part together(接口 + reducer + 效果 + 选择器)
然后在组件内访问 store 只需像 that :
注入商店:
constructor(private _store$: Store<IStore>) { }
从其中一个获取数据
a) 选择器 (ex)
this._pizzasCategories$ = this._store$.let(getCategoriesAndPizzas());
b) 直接来自商店(例如)
this._idCurrentUser$ = this
._store$
.select(state => state.users.idCurrentUser);
注意我没有 subscribe
这意味着我在我看来使用 async
管道所以 angular 为我订阅 Observable。
但当然你也可以手动完成并在你的 ts 中使用订阅。
PS: 我将发布一个启动器,其中包含所有已设置的内容,以避免浪费时间在开始一个新项目时。我将尝试在本周发布它,并在完成后立即更新此 post。或许对你有帮助。
编辑 2017 年 5 月 12 日
晚了,但我终于发布了首发:) !
https://github.com/maxime1992/angular-ngrx-starter