<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
我們知道,Angular
中因為有 service
和 rxjs
的存在,使得狀態管理在 Angular
,並非必須。
一個 BehaviorSubject 就形成了最簡單的狀態管理:
使用 Rxjs 將 service 中的邏輯部分,拆分為狀態和方法。Component subscribe state 來更新 view, 呼叫方法來修改 state。
我們知道,Angular 中可以使用 NgRx 提供的 store 來做狀態管理。NgRx store 跟 Redux 本質上是一樣的。多數時候,可能我們都覺得 Redux 太重了。而且強行將資料與 view 分離。
除了 ngrx store, ngrx 還提供了另外一種輕量級的狀態管理,component store。本質上它跟我們剛剛介紹的狀態管理模式是一致的,只是提供了一些介面方便我們使用。 NgRx - @ngrx/component-store
在定位上,可以參考 hooks 與 redux 的區分,Ngrx store 用來處理全域性狀態,Component Store 用來 component 內區域性的狀態管理使用。(Store 和 Component 擁有相同的生命週期)。當然,實際上使用下來,component store 也完全可以用來當作全域性的狀態管理來處理。
我們可以看到,store 主要提供了三個方法:
我們可以看出來,這樣的介面設計跟 Mobx 或者 Vuex 是比較接近的。區別就是,因為 RxJS 的緣故,它的實現異常簡單。幾乎只是基於 behaviorSubject 包了一層殼。
有兩點還是值得一提的:
updater 和 effect 的方法引數可以同時接受 value 和 observable value, 這使得我們在操作一個 stream 的時候,可以直接將 stream 作為引數。
比如我們現在有一個方法 updateUserName: (string | Observable<strring>) => void;
使用的時候,我們可以直接呼叫:updateUserName('zhangsan')
有時候我們在 component 裡拿到的是一個 stream。
比如 form.valueChanges, 這時候我們就不需要手動 subscribe stream, 而是直接
updateUserName(form.valueChanges.pipe(map(form => form.userName)))
在 component 中使用也比較簡單:
@Component({ template: `...`, // ❗️MoviesStore is provided higher up the component tree }) export class MovieComponent { movie$: Observable<Movie>; @Input() set movieId(value: string) { // calls effect with value.
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45