go.chromium.org/luci@v0.0.0-20240309015107-7cdc2e660f33/examples/reactjs/example_app/src/store/store.ts (about)

     1  // Copyright 2022 The LUCI Authors.
     2  //
     3  // Licensed under the Apache License, Version 2.0 (the "License");
     4  // you may not use this file except in compliance with the License.
     5  // You may obtain a copy of the License at
     6  //
     7  //      http://www.apache.org/licenses/LICENSE-2.0
     8  //
     9  // Unless required by applicable law or agreed to in writing, software
    10  // distributed under the License is distributed on an "AS IS" BASIS,
    11  // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    12  // See the License for the specific language governing permissions and
    13  // limitations under the License.
    14  
    15  import { configureStore } from '@reduxjs/toolkit';
    16  import { setupListeners } from '@reduxjs/toolkit/query';
    17  
    18  import { exampleApi } from '@/services/example_service_rtkquery';
    19  import counterReducer from '@/store/counter_slice';
    20  
    21  export const store = configureStore({
    22    reducer: {
    23      counter: counterReducer,
    24      [exampleApi.reducerPath]: exampleApi.reducer,
    25    },
    26    // Adding the api middleware enables caching, invalidation, polling,
    27    // and other useful features of `rtk-query`.
    28    middleware: (getDefaultMiddleware) =>
    29      getDefaultMiddleware().concat(exampleApi.middleware),
    30  });
    31  
    32  // Infer the `RootState` and `AppDispatch` types from the store itself
    33  export type RootState = ReturnType<typeof store.getState>;
    34  // Inferred type: {posts: PostsState,
    35  //                 comments: CommentsState, users: UsersState}
    36  export type AppDispatch = typeof store.dispatch;
    37  
    38  setupListeners(store.dispatch);