企业级 Redux 应该怎么用--部署篇

React框架从零构建到企业级项目实战全流程【前端】【React】 本文全面解析React框架从零构建到企业级项目的全流程实战,涵盖基础概念、JSX语法、组件化开发、状态管理、路由方案、性能优化等核心内容。通过电商后台管理系统案例,展示React在企业级应用中的最佳实践,包括Redux状态管理、API服务封装和TypeScript类型安全等关键技术。 阅读详情

本篇文章参考以下博文

前言

  上一节总结了一下项目结构,相信大家有了一个初步的认识,还没有看的小伙伴戳这里–结构篇,本篇文章,我们结合代码细节,来一起部署一下 redux 。

一、顶层 Redux

  顶层 redux 的项目如下,我们挨个看每个文件的配置。
在这里插入图片描述

1.1 configureStore

  首先,先看三个 configureStore 文件,最中间的 configureStore.js 细节如下:

if (precess.env.NODE_ENV === "production") {
  module.exports = require("./configureStore.prod");
} else {
  module.exports = require("./configureStore.dev");
}

  没看错, configureStore.js 这个文件里面只有这 5 行代码,这里有的同学会有一个问题,这个 precess 是什么,没有引入,直接使用会不会报错?这个变量是 node 提供给我们的环境变量,用来获取当前是属于开发环境还是生产环境,只要安装了 node 的计算机,都是可以识别的,另外 react 的运行环境也需要提前安装 node 所有同学们不用担心会不会报错的问题。

  下面是关于两个环境的对比图 ,可以看出开发环境比生产环境多了一个热模块替换的功能。
在这里插入图片描述

  多的这部分功能,是为了在更新 reducer 的时候不用去重启服务,达到修改直接生效的目的。

  还有一处需要理解的地方

applyMiddleware(thunkMiddleware, api)

  这一部分代码是使用包含自定义功能的 middleware 来扩展 redux , Middleware 可以让你包装 store 的 dispatch 方法来达到你想要的目的,每个 middleware 都不需要关心链中它前后的 middleware 的任何信息。类似于设计模式中的装饰器模式。

1.2 顶层 reducer

  顶层中的 reducer 里面,不会去配置具体业务,而是整合整个模块里面的各个小的 reducer ,具体代码如下:

import { combineReducers } from "redux";
import DemoItemReducer from "../DemoItem/Components/DataQuery/redux/reducers";

const rootReducer = combineReducers({
  DemoItemReducer
});
export default rootReducer;

  可以看出,上面代码显示引入了一个联合方法,然后引入我们写的各个组件的 reducer ,整合后导出。

1.3 middleware

  这个文件夹里面就包含了我们对于 store 中 dispatch 方法的包装。 api.js 文件的具体配置如下。

export default ({ dispatch, getState }) => next => action => {
  const { types, axiosAPI, callback } = action;
  if (!types) {
    return next(action);
  }
  if (
    !Array.isArray(types) ||
    types.length !== 3 ||
    !types.every(type => typeof type === "string")
  ) {
    throw new Error("EXpected an arrat of three string types.");
  }
  if (typeof axiosAPI !== "function") {
    throw new Error("EXpected axiosAPI to be a function.");
  }
  if (typeof callback !== "object") {
    throw new Error("EXpected callback to be a object.");
  }
  const [starType, successType, failureType] = types;
  const {
    messageSuccess = () => {},
    messageFailed = () => {},
    callbackFunc = () => {},
    dataProcessing = () => {}
  } = callback;

  dispatch({
    type: starType
  });
  return axiosAPI()
    .then(response => {
      if (response.data.ErrCode !== 200) {
        if (response.data.ErrCode !== 1010) {
          return;
        }

        dispatch({
          type: failureType,
          errorMsg: response.data.ErrCode || "failed"
        });
        messageFailed();
      } else if (response.data.ErrCode === 200) {
        dispatch({
          type: successType,
          data: dataProcessing(response.data.data) || response.data.data
        });
        messageSuccess();
        callbackFunc(dispatch, response.data.data);
      }
    })
    .catch(error => console.log(error));
};

  上面的配置主要是针对接口调用中一些类型的校验和接口返回值的异常的处理。

二、组件中的 Redux

  下面是一个组件中的层级结构。
在这里插入图片描述

2.1 数据上传

   DataQuery.js 组件里面当需要使用 redux 的时候,会先触发一个 action ,然后 action 会去找对应的 reducer , reducer 收到请求后,会把数据存入到 store 中,这样就完成了一次数据上传。

  界面使用 redux 的时候,格式如下:

import SaveLaneLineInfo from './redux/action';
...
let { dispatch } = this.props;
dispatch(SaveLaneLineInfo(data)) //调用action,传入需要更新的数据

   action 文件中的配置如下:

export const LANE_LINE_INFO = "LANE_LINE_INFO"; //线条信息

//保存线条信息
export function SaveLaneLineInfo(laneLineInfo) {  //此方法为上面组件中调用的方法
  return {
    type: LANE_LINE_INFO,
    laneLineInfo
  };
}

  上面调用 action 后会去执行 reducer 中的方法

import update from "react-addons-update";
import { combineReducers } from "redux";
import {
  LANE_LINE_INFO, //线条信息
} from "./action";

const DEFAULT_DATA_LINE = {
  showLaneData: {
    Id: 123,
    width: "小芳",
    number: 18
  }
};

function setLineInfo(state = DEFAULT_DATA_LANE, { type, payload }) {  //需要给state一个初始值,防止异常情况时,state的值出现错误
  switch (type) {
    case LANE_LINE_INFO: {
      return update(state, {
        showDetailData: {
          Id: {
            $set: payload.Id
          },
          width: {
            $set: payload.width
          },
          number: {
            $set: payload.number
          }
        }
      });
    }
    default: {
      return state;
    }
  }
}

const rootReducer = combineReducers({
  setLineInfo,
});

export default rootReducer;

  到这里,就完成了数据上传,我们更新的数据已经存入到 store 里面了。

2.2 数据使用

  接下来一个问题,如何去使用 store 里面的数据,好多同学对于这里的理解不是很清楚,只是模模糊糊的会用,但具体不知道为什么。

import { Component } from 'react';
import { connect } from 'react-redux'

class DataQuery extends Component {
  ...
}

function mapStateToProps(state) {  // ***
  let { showDetailData } = state.setLineInfo;
  return {
    showDetailData
  }
}

export default connect(mapStateToProps)(DataQuery)  //***

  重点在于观察 mapStateToProps 函数 和 最下面 导出的格式发生了改变。 connect 是 redux 提供的一个可以在组件加载的时候同时去执行其他任务的增强函数,上面导出的含义是当导出 DataQuery 组件的时候,同时执行一下 mapStateToProps 方法,该方法会连接 state 和 props ,然后返回我们需要使用的 store 中的值。

  这一大段有点绕,需要反复琢磨几遍。

let { showDetailData } = state.setLineInfo;
  return {
    showDetailData
  }

  上面这部分代码, setLineInfo 是 reducer 中的导出的方法名, showDetailData 是导出这个方法的时候,设置的属性名。
在这里插入图片描述
   上面蓝色框中的 $set 是 redux 中 update 的固定格式,表示设置 Id 属性值为 payload 中的 Id 。

  配置完以上内容后,我们的 redux 才算真正的部署完成,接下来你就可以在配置好的组件里面随意使用了,只需要通过以下方式,就可以获取到值了。

this.porps.showDetailData // showDetailData为mapStateToProps函数中返回的值

  以上便是对于 实际开发中, redux 如何部署的总结,欢迎各位大佬指点不足之处,可能由于是文字介绍,不如视频形象,有些地方也讲解的比较模糊,有疑问的同学欢迎私信我,共同探讨。




基于STM32+华为云设计的智慧农业灌溉系统(2023升级版)(158) 本项目设计一种基于STM32的智慧农业监测系统。该系统能够检测空气温度、湿度、光强度和土壤湿度等关键指标,并自动调节浇水量,实现作物生长环境的精细化管理。同时,本项目还支持本地LCD屏幕数据显示和通过ESP8266上传数据到华为云物联网平台,同时搭建流媒体服务器实现摄像头远程监控。最重要的是,本项目将利用Qt开发Android手机APP,使用户可以远程查看监测情况,了解农作物生成情况。 阅读详情

相关推荐

JLink版本不兼容?手把手教你解决APM32F003F6P6在Keil中烧写闪退和报错

本文详细解析了APM32F003F6P6在Keil中烧写闪退和报错的解决方案,重点介绍了JLink版本兼容性问题。通过实测不同版本组合,推荐使用JLink 7.20a或6.86b与Keil 5.25的黄金组合,并提供详细的降级驱动和工程配置步骤,帮助开发者高效解决烧写困境。

weixin_33694620的博客 416

react和redux中的几种常用的方法

1. createStore(reducer, [initState, enhancer])------redux中的方法 作用:创建一个Redux store来存放应用中所有的state,一个应用只能有个store。函数返回store对象。参数: reducer(Function):两个参数:state和action,返回一个state。 不要对参数state进行修改,需要返回一个新

tangzhl的博客 6018

RouterOS v7.6实战:5分钟搞定IPv6双栈配置(含光猫桥接避坑指南)

本文详细解析了在RouterOS v7.6系统中配置IPv6双栈网络的实战步骤,特别针对家庭网络光猫桥接模式下的常见问题提供了避坑指南。文章涵盖了从基础配置到企业级部署的进阶内容,包括IPv6前缀获取、DHCPv6客户端设置、路由通告以及安全优化,帮助用户充分利用v7.6版本在IPv6支持上的改进与优势。

embedding5hiker的博客 1275

Redux 入门超详细指南

优点可预测性:状态变化完全可预测,便于调试集中管理:所有状态集中在一个地方时间旅行:可以回溯到任何历史状态强大的开发工具:Redux DevTools 提供强大的调试功能中间件支持:可以轻松添加日志、异步处理等功能缺点学习曲线陡峭:概念较多,初学者需要时间理解代码量大:需要写很多样板代码过度工程:对于简单应用可能过于复杂性能开销:每次状态变化都会触发重新渲染什么时候使用 Redux?

qq_52611686的博客 1104

mysql8.0安装及配置超详细教程_mysql-8.0.15-winx64

MySQL8.0配置教程, 全网最详,同时有本地mysql和小皮系统见另一篇

小诺言的博客 2万+

表面声波滤波器——叉指换能器设计实战:从关键参数到结构选型

本文深入探讨了表面声波滤波器核心部件叉指换能器的实战设计流程。从目标驱动出发,详细解析了如何根据中心频率确定关键参数指宽,并权衡叉指对数对带宽和插入损耗的影响。文章进一步介绍了通过变迹加权优化频率响应,并对比了梯形结构与纵向耦合谐振滤波器等主流结构选型的适用场景与优缺点,为工程师提供从理论计算到仿真验证的完整设计指南。

weixin_29216353的博客 103

企业级 Redux 应该怎么用--结构篇

文章目录前言一、项目结构 前言   最近做项目,发现好多同事对于 Redux 只会照猫画虎,看着原先的代码,可以增加,但是要自己写的时候,就很懵,完全不知道怎么下手。本篇文章,就针对这种情况,做一个整理,希望能帮助各位同学更清晰的了解到 Redux 。 一、项目结构                橘色 蓝色 红色 绿色 ...

不见浅诗的博客 488

YOLO26涨点改进 | 全网首发Conv独家改进篇 | CVPR 2025 | 引入GCConv卷积改进YOLO26,含GCC3k2二次创新,能够捕捉更加丰富和复杂的特征信息,助力高效涨点

本文提出了一种基于GCConv模块的YOLO26目标检测模型改进方案。GCConv模块通过多路径结构增强特征学习能力,在训练阶段采用垂直多卷积和水平多路径配置,推理时重参数化为单一3x3卷积,显著提升推理速度而不损失性能。实验表明,该模块在复杂场景和多尺度目标检测任务中表现优异,特别适合资源受限的实时应用场景。文章详细介绍了GCConv的网络结构、核心代码实现、YAML配置文件修改方法,并提供了两种改进方案(GCConv和GCC3k2)的具体配置指导。

Ai缝合怪、助力小伙伴高效发论文 318

Redux进阶系列2: 如何合理地设计Redux的State

Redux是一个非常流行的状态管理解决方案,Redux应用执行过程中的任何一个时刻,都是一个状态的反映。可以说,State 驱动了Redux逻辑的运转。设计一个好的State并非易事,本文先从设计State时最容易犯的两个错误开始介绍,然后引出如何合理地设计State。 错误1:以API为设计State的依据 以API为设计State的依...

weixin_34259159的博客 216

学Simulink——基于新型动力与推进系统的场景实例:混合动力无人机的续航能力优化

通过本次 Simulink 仿真,你已掌握:✅混合动力系统架构设计✅内燃机、电机、电池联合建模✅三种能量管理策略(规则型、功率跟随、优化型)✅续航能力仿真与对比分析✅参数调优与优化方法核心收获混合动力是突破续航瓶颈的有效路径能量管理策略(EMS)决定系统效率电池SOC管理是关键Simulink 支持复杂多能源系统的协同仿真掌握混合动力无人机技术,你将具备设计长航时巡检机、应急通信平台、边境巡逻系统的能力。

xiaoheshang_123的博客 100

三步实现Java分布式追踪:像“开灯”一样简单

摘要: 本文通过三步实现Java分布式追踪: 引入依赖:配置Spring Cloud Sleuth+Zipkin,自动埋点无需代码侵入; 启动服务:REST接口自动生成Trace/Span ID,日志可验证; 可视化分析:通过Zipkin UI查看调用链耗时和拓扑关系。 亮点:AOP自动埋点、零业务代码修改、支持多服务链路追踪,助力快速定位性能瓶颈。适用于微服务诊断,生产环境可调整采样率平衡性能。(150字)

墨夶的博客 2710

百度地图 API 使用总结

百度地图API学习总结(一) 说明 公司项目需要一些关于定位和路线规划的功能,需要在网页中嵌入百度地图,这里主要是做一个记录,记录在开发应用中使用过的API,以便以后查询。 官方文档及参考指南下载 百度地图的官方文档写的很详细,但是内容非常多,并且很多是暂时用不到的,看起来稍微有一些麻烦,但是当你需要查找某些功能时,官方文档又是必不可少的 1.首先进入百度地...

mjzhang1993的博客 1万+

Far planner 代码系列(14)

MatchContourWithNavGraph(3) this->EnclosePolygonsCheck(); //可能有些ctnode的is_contour_necessary属性变成了true // 这说明我的contour_graph是一个local层级的 才会从这里面 get new vertices new_convex_vertices.clear(); //! 把contour_graph_里符

博客 899

Redux DevTools企业级应用案例:千万级用户产品的终极状态调试方案

Redux DevTools是一款功能强大的状态调试工具,专为Redux架构设计,能够帮助开发者追踪、调试和优化应用状态。在企业级应用开发中,尤其是支撑千万级用户的产品,Redux DevTools展现出卓越的性能和可靠性,成为状态管理调试的必备工具。 ## 企业级应用的状态调试挑战 随着应用规模的扩大和用户量的增长,状态管理变得日益复杂。千万级用户产品通常面临以下挑战: - 状态更新频繁,难

gitblog_00298的博客 412

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

React + Redux RealWorld项目:终极生产环境配置与部署指南 [特殊字符]

想要将你的React + Redux RealWorld示例应用成功部署到生产环境吗?这份完整指南将带你从零开始,掌握最佳实践和关键配置技巧。React + Redux RealWorld项目是一个遵循RealWorld规范的真实世界应用示例,展示了现代前端开发的完整流程。 ## 📦 项目概述与架构 React + Redux RealWorld示例应用是一个社交博客平台,类似于Medium

gitblog_00461的博客 1114

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

Redux Dynamic Modules与微前端架构:构建可扩展的企业级应用终极指南 [特殊字符]

在现代前端开发中,随着应用规模不断扩大,如何优雅地管理应用状态和代码分割成为了开发者面临的重要挑战。**Redux Dynamic Modules** 正是为了解决这一问题而生的强大工具,它通过动态加载Redux reducer和中间件,让Redux应用变得更加模块化和可扩展。本文将深入探讨如何利用Redux Dynamic Modules构建微前端架构的企业级应用。 ## 什么是Redux D

gitblog_07543的博客 491

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

antd radio设置默认选中_搭建 Next.js + TS + Antd + Redux + Storybook 企业级项目脚手架

前言⭐ Nextjs-TS-Antd-Redux-Storybook-Jest-Starter之所以有该项目呢,是因为日常可能自己需要练手其他 Next.js 项目,又不想每次都重新配置一遍,但基于强迫症正常企业级项目该有的配置觉得不能少了,于是就想开搞一个通用脚手架模板。说起 Next.js,8 月份写了一篇文章手把手带你入门 NextJs(v9.5),主要是因为网上大部分 Next....

weixin_29248313的博客 831

React企业级开发:2023主流技术栈集成方案

现代前端开发中,React技术栈因其组件化和高效渲染特性成为企业级应用的首选。通过Redux Toolkit管理全局状态、Axios处理HTTP请求、React Router实现路由控制,配合Tailwind CSS的原子化样式方案,可以构建出高性能的前端架构。在工程化方面,Vite和Webpack提供了高效的模块打包能力,而Mock数据的灵活运用能显著提升开发效率。这种技术组合特别适合中后台管理系统开发,能有效应对复杂的状态管理和权限控制需求,其中Redux与Axios的深度集成方案和RTK Query的

weixin_34025151的博客 824

从零到一:React企业级后台框架7天实战指南(2025最新版)

你是否还在为搭建企业级后台系统而烦恼?从零开始配置React开发环境、处理复杂权限管理、实现高效数据交互——这些琐碎却关键的工作往往耗费团队数周时间。本文将带你基于react3/react框架,通过7个实战日完成一个功能完备的企业后台系统,掌握前端工程化最佳实践、组件设计模式与性能优化技巧。读完本文,你将获得: - 企业级React项目的标准化目录结构设计方案 - 基于Redux+React R...

gitblog_00727的博客 391

【亲测免费】 推荐使用:React Antd Admin —— 高效的React企业级管理平台模板

React Antd Admin 是一个基于最新React Hooks和Typescript的最佳实践项目,旨在为开发者提供一套高效、稳定且易于维护的企业级后台管理系统模板。它集成了Ant Design框架,带来了一流的设计体验,并提供了全面的文档支持。 ## 项目介绍 该项目预览地址为[https://react-admin.winme.dev](https://react-admin.wi...

gitblog_00023的博客 1371

nextjs-ts-antd-redux-storybook-starter:快速构建 Next.js 应用程序的起点

nextjs-ts-antd-redux-storybook-starter:快速构建 Next.js 应用程序的起点 项目介绍 nextjs-ts-antd-redux-storybook-starter 是一个为 Next.js 应用程序提供快速构建的起点项目。它集成了前端开发所需的主流技术和工具,如 TypeScript、Ant Design、Redux、Storybook 和 Jest,旨...

gitblog_00719的博客 755

终极ReactGo架构指南:从零掌握Universal Redux与SSR实现原理

ReactGo作为一站式全栈通用Redux应用解决方案,为开发者提供了构建现代化Web应用的完整工具链。本文将深入解析其核心架构,帮助你理解Universal Redux与服务器端渲染(SSR)的实现原理,掌握构建高性能React应用的关键技术。 ## 🚀 什么是Universal Redux应用? Universal Redux应用(也称为同构应用)是指能够在服务器和客户端同时运行的Jav

gitblog_00021的博客 911

TSX在企业级项目中的5个最佳实践

在搭建用户列表页面前,先定义完整的用户数据类型(如User、Role等),包括分页参数和API响应结构。这能避免后续开发中因类型不匹配导致的错误。对接REST API时,为每个接口定义请求/响应类型,编辑器会自动补全字段并检查类型错误。

ThunderstormLynx23的博客 247

BlueOcean前端技术栈深度剖析:React、Redux与现代前端工程化

BlueOcean是Jenkins的现代化CI/CD界面插件,通过React、Redux等现代前端技术栈为用户提供直观易用的持续集成体验。🎯 本文将深入解析其前端架构设计、状态管理方案和工程化实践,帮助开发者理解如何构建企业级前端应用。 ## 前端技术栈架构概览 BlueOcean采用**分层架构设计**,核心模块包括: - **blueocean-core-js**: 共享JavaScr

gitblog_00694的博客 840

Redux在大型SaaS应用中的架构实践

通过Redux的replaceReducerAPI,配合Webpack的动态import,可以实现reducer的动态注册。它简化了传统Redux中繁琐的样板代码,内置了immer来保证状态不可变性,还提供了createSlice等实用工具。最近我在一个企业级项目中实践了基于Redux的状态管理方案,积累了一些经验,分享给大家。平台的一键部署功能让我能立即看到修改效果,内置的AI助手还能给出优化建议,大大提升了开发效率。对于需要处理复杂状态的大型应用,一个精心设计的Redux架构确实能带来显著优势。

SilverfoxOwl19的博客 345

Full Stack FastAPI MongoDB前端架构揭秘:Next.js + React + Redux最佳实践指南 [特殊字符]

想要快速构建现代化的全栈Web应用吗?Full Stack FastAPI MongoDB项目为你提供了完整的解决方案!这个强大的项目生成器结合了FastAPI后端和Next.js前端,让你可以专注于业务逻辑而不是基础设施。本文将深入解析其前端架构的核心设计,特别是Next.js + React + Redux的最佳实践实现方式,帮助你理解如何构建高效、可维护的现代Web应用。 ## 📊 项目

gitblog_00082的博客 960
上一篇: 企业级 Redux 应该怎么用--结构篇
下一篇: React --生命起源(新生命周期)
不见浅诗~
博客等级 码龄7年 506粉丝 129原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值