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

redux 结合 @reduxjs/toolkit 的使用

1,使用步骤

使用React Toolkit 创建 counterStore(store目录下) --> 为React注入store(src下面的index) --> React组件使用store中的数据(组件)

2,例如下面有一个简单加减的案例

先来看一下项目目录

counterStore代码:

import { createSlice } from '@reduxjs/toolkit'

const counterStore = createSlice({
  // 模块名称独一无二
  name: 'counter',
  // 初始数据
  initialState: {
    count: 1
  },
  // 修改数据的同步方法
  reducers: {
    increment (state) {
      state.count++
    },
    decrement(state){
      state.count--
    }
  }
})
// 结构出actionCreater
const { increment,decrement } = counter.actions

// 获取reducer函数
const counterReducer = counterStore.reducer

// 导出
export { increment, decrement }
export default counterReducer

store下面 index 的代码:

import { configureStore } from '@reduxjs/toolkit'

import counterReducer from './modules/counterStore'

export default configureStore({
  reducer: {
    // 注册子模块
    counter: counterReducer
  }
})

src下面index 的代码:

import React from 'react'
import ReactDOM from 'react-dom/client'
import App from './App'
// 导入store
import store from './store'
// 导入store提供组件Provider
import { Provider } from 'react-redux'

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

App的代码:

import { useSelector, useDispatch } from 'react-redux'
import {decrement,increment} from './store/modules/counterStore'

function App(){
  const dispatch = useDispatch()
  // 错误使用
  // const count = useSelector(state=>state.counter)
  // 正确使用
  const {count} = useSelector(state=>state.counter)
  return (
    <div>
      <button onClick={()=>dispatch(decrement())}>-</button>
      <h1>
        {count}
      </h1>
      <button onClick={()=>dispatch(increment())}>+</button>
    </div>
  );
}

export default App;

页面是这样的,点击加减数字就会改变了


http://www.kler.cn/a/511673.html

相关文章:

  • Linux自动挂载磁盘的方法
  • ddl-auto: create
  • 图像去雾数据集的下载和预处理操作
  • mfc操作json示例
  • 高等数学:映射与函数
  • 实力认证 | 海云安入选《信创安全产品及服务购买决策参考》
  • 【机器学习实战入门】泰坦尼克号生存预测
  • matlab实现一个雷达信号处理的程序,涉及到对原始图像的模拟、加权、加噪以及通过迭代算法对图像进行恢复和优化处理
  • 三格电子——CAN转WIFI网关
  • Web安全|渗透测试|网络安全
  • oracle 的物化视图介绍
  • 小白误入(需要一定的vue基础 )使用node建立服务器——vue前端登录注册页面连接到数据库
  • Linux系统服务管理
  • 基于VSCODE+GDB+GDBSERVER远程单步调试设备篇(可视化界面)
  • 哈尔滨有双线服务器租用吗?
  • Redis 学习指南与资料分享
  • 26个开源Agent开发框架调研总结(二)
  • 基于单片机的开关电源设计(论文+源码)
  • 麒麟LINUX V10SP3 2401安装ORACLE 12.2.1 runInstaller直接报UNZIP格式不对
  • 如何通过 Nginx 实现 CouchDB 集群的负载均衡并监控请求分发
  • pthread_create函数
  • DeviceNet转Profinet网关+FANUC机器人:打造工业界的灭霸手套,掌控无限可能
  • owasp SQL 注入测试-01 (准备工作)
  • Jmeter 动态参数压力测试时间段预定接口
  • 前缀和算法习题篇(下)
  • 网络安全---CMS指纹信息实战