React×Recoil×Storybook を動かす
ブログ
なぜこの記事を書いたか
Recoil でのデータ管理が含まれているコンポーネントを Storybook で動かしたかった。
ちゃんと探せばあったと思うけど、軽く探しても見つからなかったので雛形を作った。
※Recoil も Storybook も今日はじめて触ったので多分に間違っている可能性あり
構成
Storybook Get startedを流用したタスクリストがベース。
- /src
- /components
- Task.stories.tsx
- Task.tsx
- TaskList.stories.tsx
- TaskList.tsx
- stores
- taskStore.ts
- types
- storybook.d.ts
- App.tsx
tasksをtaskStore.tsで定義して Recoil で管理する。
TaskList.tsxでtasksの状態を変化させる。
Task.tsxはtasksの map から作成される。
解決策(TaskList.stories.tsx)
モックコンポーネントを作る
Loading...
recoil にセットしたい変数を props の定義に追加する
Loading...
props の値を recoil にセットする
Loading...
元のコンポーネントを返す
Loading...
モックコンポーネントを Default Export する
Loading...
各ストーリーオブジェクトで props として recoil にセットしたい値を渡す
Loading...
ソース
全体:https://github.com/k4a-dev/react-recoil-storybook
TaskList.stories.tsx
Loading...
TaskList.tsx
Loading...
免責
-
実際の運用だと tasks はサーバサイドで管理するが、今回はローカルのグローバルステートとして扱う
-
この程度の実装なら もとから props で渡しちゃったほうが楽だけど、今回は recoil を使うのが目的