redux-toolkitを食わず嫌いしないでみる
#redux #react
食わず嫌いしている理由
「あくまで選択肢の一つ」というのは理解出来る
しかしRedux Toolkitが「Style Guideとして推奨されている」という事実にはあまり好みな感情を持っていない
https://redux.js.org/style-guide/style-guide#use-redux-toolkit-for-writing-redux-logic
slicerの挙動がちょっと・・・
とはいえこれも「starter kit 」という名前のときは強い抵抗があったが、toolkitと言われるとだいぶ落ち着いた感じがあある
=初手でそういう学び方をするのが良いのか?
食わず嫌いを辞めた理由
toolkitという名前になって立場が明確になったから
starter-kitのときは正直どこに着地するか見えなかった
結局reduxのままあがけばあがくほどredux-toolkitに寄っていく
immerが結局immutability補助ツールとして現状落とし所になってくる
色々考えてみると、確かにhooksの台頭によってReduxが単体として利用するツールとしては利点がかなり薄くなっているように感じる。
使った感想
Pros
確かに便利さはある。
toolkitのレールに乗っている上であれば、型に関する恩恵がかなり大きい
createThunkAction / createEntityAdapterが出てきたのはかなり良い
特に非同期処理に手が入ったのはかなり歓迎されるべきこと
Cons
createSliceでreducerを記述すると、useReducerとの互換性が死ぬ
createAsyncThunkが引数としてpureじゃないobjectを受け取れない
createSlice / extraReducerとactionの依存性。actionを切り出しづらい
Tips
TypeScript利用は割と癖ある
https://redux-toolkit.js.org/usage/usage-with-typescript
dispatchやselector
actionをreducer側で利用するときは[someAction]ではだめで[someAction.type]とする必要がある
https://redux-toolkit.js.org/usage/usage-with-typescript#createreducer
creatSliceの型定義はinitialState : { ...someState } as SomeStateとかするのが妥当。
createSlice<State ... >のやり方は難しい
caseReducerとは・・?
https://github.com/reduxjs/redux-toolkit/blob/92e17c252ecb4a5f3ab40ac69dc8a8236702397a/src/createSlice.ts#L52-L56
ほとんどテスト用途考えて良い?
https://github.com/reduxjs/redux-toolkit/releases/tag/v0.8.0
https://github.com/reduxjs/redux-toolkit/issues/82#issuecomment-533877434
https://github.com/reduxjs/redux-toolkit/pull/209