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 を使うのが目的