安装
npm install @reduxjs/toolkit react-redux
创建 slice
src/store/counterSlice.js
import { createSlice } from "@reduxjs/toolkit";const counterSlice = createSlice({name: "counter",initialState: {number: 0,},reducers: {add: (state) => {state.number++;},sub: (state) => {state.number--;},addPayload: (state, action) => {console.log(action);state.number += action.payload;},},
});
export const { add, sub, addPayload } = counterSlice.actions;
export default counterSlice.reducer;
配置 store
src/store/store.js
import { configureStore } from "@reduxjs/toolkit";
import counterReducer from "./counterSlice";
const store = configureStore({reducer: {counter: counterReducer,},
});
export default store;
在根组件中提供 store
main.jsx
import { StrictMode } from "react";
import { createRoot } from "react-dom/client";
import "./index.css";
import App from "./App.jsx";
import { Provider } from "react-redux";
import store from "./redux/store.js";createRoot(document.getElementById("root")).render(<StrictMode><Provider store={store}><App /></Provider></StrictMode>
)
使用 store
app.jsx
import { useDispatch, useSelector } from "react-redux";
import "./App.css";
import { add, addPayload, sub } from "./redux/counterSlice";function App() {const count = useSelector((state) => state.counter.number);const dispatch = useDispatch();return (<><div><h1>{count}</h1><button onClick={() => dispatch(add())}>加 1</button><button onClick={() => dispatch(sub())}>减 1</button><button onClick={() => dispatch(addPayload(5))}>加固定的数</button></div></>);
}export default App;