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);