React/Next.jsに導入する今どきの状態管理ライブラリの話

5
agricultural @snowcrush

Next.jsで作ってるアプリにグローバルな状態管理を入れたいんだけど、今だと何を入れるのがいいんだろう?ググると皆Redux入れてるんだけど今想定している規模感だとちょっと重い気がしてるんだよな。

2021-03-30 22:50:35
agricultural @snowcrush

というかNext.jsがあんまりSPA的な使い方は想定していないのかな。そんなはずはないだろうけど、パパっと調べた感じHooksやSWR使ってますみたいな例が多い。

2021-03-30 22:52:36
agricultural @snowcrush

フロントエンド触るの久しぶりだから浦島太郎過ぎて分からん…。

2021-03-30 22:53:35
agricultural @snowcrush

Flux時代に戻ってEventEmitterで雑にStore書くかな…。

2021-03-30 22:59:00
agricultural @snowcrush

お、react-reduxにもhooks導入されてるのか。勉強がてらこれで書いてみようかな。

2021-03-30 23:01:00
agricultural @snowcrush

hooks使うと大分楽だな…。 あんなにめんどくさかったconnectが推奨されない書き方になっていて驚く。

2021-03-31 01:01:53

RecoilとかJotaiとかがあるよという話

kamedon @kamedon39

@snowcrush 個人的にはrecoilかjotaiもよいとは思ってたり。

2021-03-31 06:50:23
agricultural @snowcrush

@kamedon39 recoil、jotaiですか。さらっと調べた感じcontextベースなんですね。見た目シンプルでよさげですね。flux/reduxと違ってステートが分散されないかが気になります。

2021-03-31 09:54:15
kamedon @kamedon39

@snowcrush アーキテクチャ次第で、ある程度技術レベルがそろってるなら、双方向みとめちゃって、クリーンアーキテクチャとかでもよいかな。

2021-03-31 10:02:43
agricultural @snowcrush

@kamedon39 個人の趣味プロジェクトなんで選定は単純に僕の好みになりますねw アーキテクチャはReactなんでイベントソーシングでやりたいですね。他はあんまりこだわり無いです。 Flux/Reduxで作ってたら自然にクリーンアーキテクチャっぽい依存性の入れ子が出来る気がしますが、何か特別な設計いりますかね?

2021-03-31 10:19:22
kamedon @kamedon39

@snowcrush Reduxだからっていうより、何でもかんでも突っ込んで、いろんなページで、かんじがらめになり、やりたいui操作ができないのをみちゃったので、ステートとアクションの設計の熟練度がまぁまぁいるなぁって思います。

2021-03-31 10:23:27
agricultural @snowcrush

@kamedon39 それは分かりますw 自分が最初にRedux微妙だなあって書いたのもそういう経験から来ているので。 ただ今はhooksベースで大分きれいになってるっぽいので、勉強がてらひとまずRedux試してみようと思ってます。

2021-03-31 10:27:02

Reduxのサイズ感とかHooksとかの話

kamedon @kamedon39

@snowcrush 本来ローカルステートで管理したほうがよいものも、グローバル管理になりがちで、細かいuiの制御や、画面遷移が難しくなりがちなので、Reduxを上手に料理するのが難しい印象。

2021-03-31 10:17:57
agricultural @snowcrush

@kamedon39 その辺はhooks使えばいいかなと思いました。最近のreact-reduxはAPIがhooksベースで(僕が使っていた当時と比べると)随分きれいになってますね。

2021-03-31 10:20:34
kamedon @kamedon39

@snowcrush hooksつかってもステートとアクションの設計の話なので問題は解決してなくて。とりあえずReduxより気軽なものとして、Recoilとかをあげました。

2021-03-31 10:29:18
agricultural @snowcrush

@kamedon39 ローカルステートならhooksで管理できるのでは?アクションはコンポーネントの外に投げるときに必要になるのでうちで閉じているなら関係ないように思います。 Contextとかが入ってくるとRecoilのようなライブラリが欲しくなるのは分かります。

2021-03-31 10:39:56
agricultural @snowcrush

@kamedon39 あー、一つ前のツイートで書いたことの前半はreact-reduxのhooksAPIを使えばグローバル管理が前よりきれいになるという話で、後半はhooks単体で使えばローカルステートの管理はそこで閉じられますよねという話です。ややこしくてすみません。

2021-03-31 10:41:50
agricultural @snowcrush

@kamedon39 前半と後半を逆に書いてしまったw twitter.com/snowcrush/stat… 前半はローカルステート管理の話、後半がグローバルステート管理の話です。

2021-03-31 10:43:09

今どきはGraphQL系が熱いのかな?という話

kamedon @kamedon39

@snowcrush 今年のアンケート結果だとこんな感じでした 2020.stateofjs.com/en-US/technolo…

2021-03-31 10:48:05
リンク 2020.stateofjs.com State of JS 2020: Data Layer The annual survey about the latest trends in the JavaScript ecosystem. 1
kamedon @kamedon39

@snowcrush 上がってるツール粒度はあれなんだけど、Reduxは定番で新興がFacebookが作ってるRecoilなどですね。

2021-03-31 10:49:57
agricultural @snowcrush

@kamedon39 やっぱGraphQLが人気なんですねー。サーバサイドからの受け取りが主眼になってきているのかな。 今作ってるやつはPWAっぽいやつで、クライアントサイドでデータ管理が閉じているのであんまりバックエンドには依存しない作りになっていますがAPI作るならGraphQLでやりたいですね

2021-03-31 10:54:14