Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
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 !! ”));