0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Redux + TypeScriptで複数Reducerを結合したRootReducerの型を取得する方法

Posted at

Redux + TypeScriptで複数Reducerを結合したRootReducerの型を取得する方法

Reduxを使用したプロジェクトで複数のreducerをcombineReducerを使って結合した場合に生成されるRootReducerの型が分からず困ったため、良い方法はないかと公式ドキュメントを探っていたら一発で取得できる方法が紹介されていたので邦訳の意味を込めて紹介する。

やり方

次の方法で取得できる。

export type RootState = ReturnType<typeof store.getstate>;

この方法を使う文脈

こんな場合に使える。(※ReduxToolKitを使った実装の前提)

// reducerの結合
const reducers = combineReducers({
  user: userSlice.reducer,
  hoge: hogeSlice.reducer
});

// storeとreducersを紐付け
const store = configureStore({
  reducer: reducers
});

export default store;

// 結合したreducerのstateTree全体の型を取得する
export type RootState = ReturnType<typeof store.getstate>;

取得した型を活用できる場面

この方法で取得した型を活用する1つのケースとして、useSelectorで値を取得する際にRootReducerの型を指定する必要がある場合などが挙げられる。

useSelector<RootState, userState>((state)=> state.users);
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?