logo
/
React×Recoil×Storybook を動かす
2022-04-24
ブログ

なぜこの記事を書いたか

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
taskstaskStore.tsで定義して Recoil で管理する。
TaskList.tsxtasksの状態を変化させる。
Task.tsxtasksの 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 を使うのが目的

関連