React Toolkit (RTK)

創(chuàng)建一個React項目,選擇Ract,JavaScript + SWC

yarn create vite redux-app
cd redux-app
git init
yarn
yarn add @reduxjs/toolkit react-redux

redux/counterSlice.jsx

import {createSlice} from "@reduxjs/toolkit";

const initialState = {
    value: 0
}

export const counterSlice = createSlice({
    name: "counter",
    initialState,
    reducers: {
        increment: state => {
            state.value += 1
        }
    }
})

export const {increment} = counterSlice.actions
export default counterSlice.reducer

redux/store.jsx

import {configureStore} from "@reduxjs/toolkit";
import counterReducer from "./counterSlice.jsx";

export const store = configureStore({
    reducer: {
        counter: counterReducer
    }
})

index.jsx

import ReactDOM from 'react-dom/client'
import App from './App.jsx'
import './index.css'
import {Provider} from "react-redux";
import {store} from "./redux/store.jsx";

ReactDOM.createRoot(document.getElementById('root')).render(
    <Provider store={store}>
    <App />
    </Provider>
)

app.jsx

import './App.css'
import {useDispatch, useSelector} from "react-redux";
import {increment} from "./redux/counterSlice.jsx";

function App() {
    const count = useSelector(state => state.counter)
    const dispatch = useDispatch();

    return (
        <>
            <div className="card">
                <button onClick={() => dispatch(increment())}>
                    count is {count.value}
                </button>
            </div>
        </>
    )
}

export default App
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容