Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
NgRx v8を使ってみよう
Search
puku0x
September 11, 2019
Technology
1
800
NgRx v8を使ってみよう
https://ng-fukuoka.connpass.com/event/144382/
puku0x
September 11, 2019
Tweet
Share
More Decks by puku0x
See All by puku0x
Findyの開発生産性向上への取り組み ~Findyフロントエンドの場合~
puku0x
0
330
Findyの開発生産性を上げるためにやったこと
puku0x
1
410
Angularコーディングスタイルガイドはいいぞ
puku0x
1
120
Nx CloudでCIを爆速にした話
puku0x
0
500
Findyのフロントエンド設計刷新を通して得られた技術的負債との向き合い方
puku0x
1
1.5k
最高の開発体験を目指して 〜Findyのフロントエンド設計刷新〜
puku0x
0
690
VSCode GraphQL + GraphQL Code Generator による快適なフロントエンド開発
puku0x
0
1.7k
Nxはいいぞ
puku0x
0
630
Angularの静的サイトジェネレーター「Scully」の最新情報
puku0x
0
240
Other Decks in Technology
See All in Technology
マイクロサービスを横断したGoのコードレビュー
yuyu_hf
PRO
1
120
5分で理解するWebAssemblyのWebの外の話 PHPはマイコンの夢を見るか?
usuyuki
3
200
二刀流でWinActorを活用してみた話
tamai_63
0
120
GitHub composite actions
hkusu
1
120
スクラムガイドに載っていないスクラムのはじめかた - チームでスクラムをはじめるときに知っておきたい5個のコツ - / How to start Scrum that is not written in the Scrum Guide
takaking22
14
5.3k
Command-line interface tool design / PHPerKaigi 2024
k1low
4
1k
Proposal for a fictitious company presented by JAWS-UG DE&I team 'Naniwa Musume'
hiroramos4
PRO
0
120
MLOpsのエッセンスを取り⼊れて評価 pipelineを再構築している件
sansantech
PRO
1
230
Pass On What You Have Learned: Deploying to Production
ianlee1521
0
150
プロダクト開発ゼロイチの分類とロジックス事業がイチに至るまで
niwatakeru
0
100
庁舎DX推進ガイドブック
senryakuka
0
1.8k
スケジュール指定のFargate Spotと友達になれた話
news_it_enj
0
240
Featured
See All Featured
Into the Great Unknown - MozCon
thekraken
10
810
Automating Front-end Workflow
addyosmani
1353
200k
Pencils Down: Stop Designing & Start Developing
hursman
115
11k
A Tale of Four Properties
chriscoyier
150
22k
RailsConf 2023
tenderlove
0
500
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
14
1.3k
The Pragmatic Product Professional
lauravandoore
24
5.7k
Product Roadmaps are Hard
iamctodd
43
9.6k
5 minutes of I Can Smell Your CMS
philhawksworth
199
19k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
28
5.9k
Happy Clients
brianwarren
91
6.3k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
219
21k
Transcript
NgRx v8を使ってみよう Angularもくもく会 in Fukuoka #9
Noriyuki Shinpuku ng-fukuoka organizer VEGA corporation Co., Ltd. @puku0x
Angular
Full-fledged & opinionated Angular Protractor Forms PWA Augury Language Services
Router Elements CDK Universal Karma Labs Compiler i18n Http Material Animations CLI
State management?
RxJS
Basic state management • BehaviorSubject • ReplaySubject ◦ No initial
value ◦ No current value getter
BehaviorSubject import { Injectable } from '@angular/core'; import { BehaviorSubject
} from 'rxjs'; @Injectable({ providedIn: 'root' }) export class CouterService { private counter = new BehaviorSubject(0); // Initial value = 0 get counter$() { return this.counter.asObservable(); } increment() { const value = this.counter.getValue(); this.counter.next(value + 1); } }
ReplaySubject import { Injectable } from '@angular/core'; import { BehaviorSubject
} from 'rxjs'; @Injectable({ providedIn: 'root' }) export class CouterService { private counter = new ReplaySubject(1); // Buffer size = 1 get counter$() { return this.counter.asObservable(); } setCounter(value: number) { this.counter.next(value); } }
Complex state management?
None
NgRx • RxJS powered Redux for Angular • Type-safe and
performant • Community driven
None
Does it have many boilerplates?
NgRx v8 has less boilerplates!
https://blog.angularindepth.com/ngrx-action-creators-redesigned-d396960e46da
Action creator factory import { createAction, props } from '@ngrx/store';
export const increment = createAction( '[Counter] Increment' ); export const setValue = createAction( '[Counter] Set value, props<{ value: number }>() );
Reducer creator factory import { createReducer, on } from '@ngrx/store';
import { increment, setValue } from './counter.actions'; export const initialState = 0; const counterReducer = createReducer(initialState, on(increment, state => state + 1), // No more switch-case! on(setValue, (state, { value }) => value) );
Effect creator factory import { Actions, ofType, createEffect } from
'@ngrx/effects'; import { tap } from 'rxjs/operators'; import { setValue } from '../actions'; @Injectable() export class CounterEffects { constructor(private actions$: Actionn) {} setValue$ = createEffect(() => // No more @Effect decorator! this.actions$.pipe( ofType(setValue), tap(({ value }) => console.log(`${value}`)) ), { dispatch: false } );
Creator factories make NgRx simple!
Recap • NgRx provides Redux for Angular • Less boilerplate
with creator factories • Try it now! https://ngrx.io/ https://stackblitz.com/edit/ngrx-todo-v8
Thank you! @puku0x Noriyuki Shinpuku