blob: f0fc62854e3a5ab33d3d82890c06ac924e150934 [file] [log] [blame]
import { createSlice, PayloadAction } from "@reduxjs/toolkit";
import type { RootState } from "./store";
// Define a type for the slice state
interface appState {
value: number;
}
// Define the initial state using that type
const initialState: appState = {
value: 0,
};
export const appSlice = createSlice({
name: "app",
// `createSlice` will infer the state type from the `initialState` argument
initialState,
reducers: {
increment: (state) => {
state.value += 1;
},
decrement: (state) => {
state.value -= 1;
},
// Use the PayloadAction type to declare the contents of `action.payload`
incrementByAmount: (state, action: PayloadAction<number>) => {
state.value += action.payload;
},
},
});
export const { increment, decrement, incrementByAmount } = appSlice.actions;
// Other code such as selectors can use the imported `RootState` type
export const selectCount = (state: RootState) => state.app.value;
export default appSlice.reducer;