pnpm add @reduxjs/toolkit react-redux
import { configureStore } from "@reduxjs/toolkit"
export default configureStreactore({
reducer: {}
})
import React from "react"
import ReactDom from "react-dom"
import App "./App"
import store from "./store"
import { Provider } from "react-redux"
ReactDOM.createRoot(document.getElementById('root') as HTMLElement).render(
<React.StrictMode>
<Provider store={store}>
<App />
</Provide>
</React.StrictMode>,
)
import { createSlcie } from "@reduxjs/toolkit"
export const counterSlcie = createSlcie({
name: "counter",
inititalState: {
value: 0
},
reducers: {
increment: state => {
state.value += 1
},
decrement: state => {
state.value -= 1
},
incrementByAmount: (state, action) => {
state.value += action.payload
}
}
})
// 每个 case reducer 函数都会生成对应的 action creators
export const { increment, decrement, incrementByAmount } = counterSlcie.actions
export default counterSlice.reducer
import { configureStore } from "@reduxjs/toolkit"
import counterReducer from "./counterSlice"
export default configureStore({
reducer: {
counterSlice: counterReducer
}
})
import React from "react"
import { useSelector, useDispatch } from "react-redux"
import { decrement, increment } from "./store/counterSlice"
export function Counter() {
const count = useSelector(state => state.counterSlice.value)
const diapatch = useDispatch()
return (
<div>
<span>{count}</span>
<button onClick={() => dispatch(increment())}>Click</button>
</div>
)
}