当前位置: 首页 > news >正文

【React】React-toolkit

安装

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;

相关文章:

  • java设计模式-组合模式
  • 路由交换网络专题 | 第二章 | RIP | OSPF | 路由聚合 | 路由过滤 | 静默接口
  • Linux上位机开发实践(底板设计)
  • matlab与dsp28335联调
  • MySQL索引介绍
  • 什么是VLA
  • 【数据结构】HashMap源码 —— 简单介绍
  • 人工智能之数学基础:奇异值分解SVD
  • JAVA SDK通过proxy对接google: GCS/FCM
  • 实测解析:FP7208 在汽车照明、摄影照明、教育照明以及太阳能照明等不同市场领域的典型应用参数解析和案例分析
  • Kingbase 常用运维命令总结
  • Vue的学习总结-day02
  • Pinyin4j修仙指南:从汉字到拼音的声韵转换大法
  • 部署Fish-Speech实现声音克隆及文本转语音
  • Windows 系统中安装 Git 并配置 GitHub 账户
  • C++基本语法
  • 【C语言】--- 编译和链接
  • C语言程序环境和预处理详解
  • centos7.9升级OpenSSL 1.1.1
  • 代码随想录算法训练营Day23
  • 中性衣服印花图案设计网站/搜索引擎推广案例
  • 域名怎么做网站内容/谷歌搜索引擎优化
  • vps主机可以做几个网站/陕西seo顾问服务
  • 金融网站建设方案ppt模板/seo推广主要做什么
  • 廊坊网站建设推广/上海市人大常委会
  • 国家建设部网站2018年/seo前景