×
Copy
Open
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Slide 1
Slide 1 text
redux-tower でルーティングを制する @kuy / Yuki Kodama 2017.02.07 @ Meguro.es #8
Slide 2
Slide 2 text
自己紹介 @kuy (カイ) / Yuki Kodama 株式会社ジャパンベンチャーリサーチ(新橋 → 恵比寿) entrepedia(アントレペディア)の開発・運用 AWS, Ruby on Rails, JavaScript (React+Redux+Saga) ● redux-sagaでルーティングを制する ● redux-sagaで非同期処理と戦う ● Reduxでコンポーネントを再利用する ● ・・・など Qiita の記事
Slide 3
Slide 3 text
redux-tower というのは・・・ ● redux-saga を使ったルーティングライブラリ ● ルートがアクティブになってからコンポーネントを表示するまでのロジックを Saga で書く → フルコントロール可能 ○ データの読み込み、認証、フォーム内容が変更されていたらページ遷移をブ ロック、途中でリダイレクト、...etc ● ルート定義は JSON(JSX は使わない) ○ ネスト可能、Entering/Leavingフック、省略記法 ● SSR は未対応(試してすらいない・・・) ○ 自分が SSR やってないだけなので PR 歓迎! リポジトリ https://github.com/kuy/redux-tower
Slide 4
Slide 4 text
ルート定義 #1 ルート定義 ルートアクション (Saga) パス + =
Slide 5
Slide 5 text
ルート定義 #2 ReduxのStateからログイン状態を取得して、未ログインのときのみログイ ンページにリダイレクト
Slide 6
Slide 6 text
ルート定義 #3 ログイン処理の結果を待って、成功したときは管理ページ、失敗したときは ログインページにリダイレクト
Slide 7
Slide 7 text
仕組み #1 ● redux-sagaとルートアクションの間に入るProxy Generator ○ redux-tower 自体も redux-saga で動く Saga の1つにすぎない ● redux-saga ↔ redux-tower ↔ ルートアクション ○ パスの変更を検出してルート定義とのマッチング ○ ルートアクションもただのGeneratorなのでnext()呼び出してyieldされ た値を取り出す ○ 省略記法のときだけSagaのEffectに変換したり、特別な処理 ○ あとはredux-sagaに丸投げ
Slide 8
Slide 8 text
仕組み #2 通常のSagaのEffectだった場合(callとかtakeとか)
Slide 9
Slide 9 text
仕組み #3 React コンポーネントが yield された場合(省略記法)
Slide 10
Slide 10 text
今後 ● セットアップの簡素化 ● Leavingフックの改善 ● スクロール位置の復元 ● バグ直さないと・・・ ● 明日、redux-towerを使った社内向けシステムの管理画面リリース ● 1.0 リリース ○ その前にまずは 0.1.0 リリース
Slide 11
Slide 11 text
ブログアプリのデモ http://kuy.github.io/redux-tower/blog/
Slide 12
Slide 12 text
yield call(say(“ Thank you !! ”));