react-redux教程

Nginx健康检查实战:如何用第三方模块提升服务可用性(附详细配置) 本文深入探讨了如何通过集成第三方健康检查模块来提升Nginx的服务可用性。文章对比了Nginx默认被动检查的局限性,并详细介绍了主动健康检查的核心优势、主流模块选型,以及以nginx_upstream_check_module为例的实战部署与配置指南,帮助运维人员构建更可靠的负载均衡架构。 阅读详情

一、react-redux是什么?

redux: 是一个用于管理组件公共状态的一个可预测状态的框架,集中管理组件的状态.核心在于store,它提供了dispatch,getState,subscribe方法,理解Redux的工作流程很重要
在这里插入图片描述
react-redux: 它是redux作者封装的一个库,是一个第三方的模块,对Redux进一步的封装简化,提供了一些额外的API(例如:Provider,connect等),使用它可以更好的组织和管理我们的代码,遵循一定的组件拆分规范,在React中更方便的使用Redux。
关系: 它不是必须的,在实际项目中,可选用.是使用Redux还是使用react-redux,取决于你自己,项目组成员的熟悉程度,适合自己的才是最好的,使用后者提供了一些便利,但需要额外的掌握一些API的使用。
Redux流程:
component–>dispatch(action)–>reducer–>subscribe–>getState–>component
react-redux流程:
component–>actionCreator(data)–>reducer–>component

二、安装

npm install --save react-redux
或
yarn add react-redux

三、state

前端中的state就是数据,就是一个对象。redux中的state是不能直接修改的,只能通过action来修改,相当于我们在单例中定义setter方法。

四、action

redux 将每一个更改动作描述为一个action,要更改state中的内容,你需要发送action。一个action是一个简单的对象,用来描述state发生了什么变更。

const INCREMENT = 'INCREMENT'
const incrementAction = {"type": INCREMENT, "count": 2}

上面这就是一个action,说白了就是一个对象,根据里面的type判断做什么操作。

五、reducer

数据state,指示action都有了那么就是实现了。reducer就是根据action来对state进行操作。

const calculate = (state: ReduxState = initData, action: Action ) => {
    switch (action.type) {
        case INCREMENT:
            return {num: state.num + action.count}
        case REDUCE:
            return {num: state.num - action.count}
        default:
            return state
    }
}

export {calculate}

通过reducer操作后返回一个新的state,比如这里根据action的type分别对state.num进行加减。

六、store

store就是整个项目保存数据的地方,并且只能有一个。创建store就是把所有reducer给它。

import { createStore, combineReducers } from "redux";
import { calculate } from "./calculate";

// 全局你可以创建多个reducer 在这里统一在一起
const rootReducers = combineReducers({calculate})
// 全局就管理一个store
export const store = createStore(rootReducers)

七、Provider和connect

Provider: 它是一个组件,用于连接了Store,它把store提供给内部组件,接受store作为props,然后通过context往下传,这样react中任何组件都可以通过context获取store。

 <Provider store={store}>
    <Router>
      <Route path="/" component={App} />
    </Router>
  </Provider>

connect:
connect顾名思义,是一个连接器,它是连接容器组件和UI(傻瓜)组件的,它是 react-redux提供的一个方法,用于从 UI 组件生成容器组件,把两种组件给连接起来

connect方法接收四个参数,一个是 mapStateToProps,另一个是 mapDispatchToProps,当然还有两个参数: mergeProps, options,它们是可选的。

1、mapStateToProps(state, ownProps):

mapStateToProps是一个函数,用于建立组件跟 store 的 state 的映射关系(简单来理解就是只能输入,把state中的数据渲染到模板上),它可以传入两个参数,结果一定要返回一个 object 。传入mapStateToProps之后,会订阅store的状态改变,在每次 store 的 state 发生变化的时候,都会被调用。

 const mapStateToProps = (state) => {
  return {
    todoList: state.todoList
  }
}
2、mapDispatchToProps(dispatch,[ownProps])

mapDispatchToProps用于建立组件跟store.dispatch的映射关系(简单来概括就是输出),可以是一个object,也可以传入函数。如果mapDispatchToProps是一个函数,它可以传入dispatch,ownProps, 定义UI组件如何发出action,实际上就是要调用dispatch这个方法。


/* 假设actions是一个import进来的值为actionCreator的object */
action.increase = function (info) {
  return {
     {
        type:'INCREASE',
        info
     }
  }
}
action.decrease = function (info) {
  return {
     {
        type:'DECREASE',
        info
     }
  }
}
const mapDispatchToProps = (dispatch, ownProps) => {
  return {
    increase: (...args) => dispatch(actions.increase(...args)),
    decrease: (...args) => dispatch(actions.decrease(...args))
  }
}
3、mergeProps(stateProps, dispatchProps, ownProps)

它是 connect函数的第三个参数,将 mapStateToProps()与 mapDispatchToProps()返回的对象和组件自身的 props合并成新的 props并传入组件。默认返回 Object.assign({}, ownProps, stateProps, dispatchProps)的结果

const mergeProps = () => {
      return Object.assign({}, ownProps, stateProps, dispatchProps)
}
4、options

当 pure = true表示 connect容器组件将在 shouldComponentUpdate中对 store的 state和ownProps进行浅对比,判断是否发生变化,优化性能。若为false则不对比

这个options有很多,具体可以参考 react-redux官方文档

{
  context?: Object,
  pure?: boolean,
  areStatesEqual?: Function,
  areOwnPropsEqual?: Function,
  areStatePropsEqual?: Function,
  areMergedPropsEqual?: Function,
  forwardRef?: boolean,
}

八、在容器中的使用


//定义一个容器
class Counter extends Component {
  render() {
    const { value, onIncreaseClick } = this.props
    return (
      <div>
        <span>{value}</span>
        <button onClick={onIncreaseClick}>Increase</button>
      </div>
    )
  }
}
WPF进阶 | 深入 WPF 依赖项属性:理解其强大功能与应用场景 WPF进阶 | 深入 WPF 依赖项属性:理解其强大功能与应用场景,在 Windows Presentation Foundation(WPF)开发中,依赖项属性是一个核心且强大的特性,它为构建灵活、可扩展的用户界面提供了关键支持。理解并熟练运用依赖项属性,对于开发高效、健壮的 WPF 应用程序至关重要。本文将深入探讨 WPF 依赖项属性,通过丰富的代码示例和对关键概念的详细解释,帮助读者全面掌握这一重要特性及其应用场景。 阅读详情

相关推荐

从打印攻击到视频重放:手把手用OULU-NPU训练你的第一个活体检测模型

本文详细介绍了如何使用OULU-NPU数据集训练活体检测模型,以应对打印攻击和视频重放等安全威胁。通过PyTorch框架,从环境准备、数据加载、预处理到模型架构设计,手把手教你构建一个高效的双流网络,结合CNN和LSTM技术,提升模型在多种攻击场景下的检测准确率。

weixin_29092031的博客 385

React-Redux

React-Redux 一 React-Redux的应用 1.学习文档 英文文档: https://redux.js.org/ 中文文档: http://www.redux.org.cn/ Github: https://github.com/reactjs/redux 2.Redux的需求 状态的集中管理 任意页面与组件之间的数据传递 状态管理的可预测 数据的本地化缓存提升性能 随着对JavaScript单页应用程序的要求变得越来越复杂,我们的代码必须比以前更多地处理状态。此状态可以包括服务器响应

weixin_57218747的博客 2万+

信创环境下,软件测试如何破局?

毕竟,在自主可控的道路上,每一行通过测试的代码,都在为信创产业的未来添砖加瓦。未来,测试工程师不仅要验证软件在信创环境的可用性,更要基于国产软硬件的特性,推动软件进行 “原生设计”—— 例如,针对国产 CPU 的多核架构优化代码,基于国产数据库的索引机制提升查询效率。某政务云平台的测试数据显示,在 “飞腾芯片 + 麒麟操作系统” 环境下,系统的并发处理能力较传统环境下降约 15%,测试团队通过优化软件的线程调度逻辑,最终将性能损失控制在 5% 以内 —— 这正是信创性能测试的价值所在。

weixin_45608163的博客 886

【React】React-Redux

react-redux

南栀的博客 4326

【C++ 使用libxlsxwriter库向excel表格中插入图片 CMake + VS2019】

使用libxlsxwriter向excel表格插入图片

恒星游历者的博客 755

BQ4050开发进阶(二):Protections参数优化策略与实战解析

本文深入解析了BQ4050电池管理芯片中Protections参数的优化策略与实战方法。针对电压、电流、温度等核心保护功能,详细阐述了如何根据具体电芯特性、负载场景和环境因素,精细调整CUV、COV、OCC/OCD等阈值与延时,以在确保电池绝对安全的前提下,实现极致的用户体验与系统可靠性。

rgv234567的博客 480

React-Redux详解

React-Redux是一个用于在React应用中管理状态的第三方库。它是基于Redux架构的,提供了一种在React应用中高效管理状态的方式。React-Redux通过将Redux的核心概念和React组件相结合,使得在React应用中使用Redux变得更加简单和方便。React-Redux是一个用于在React应用中管理状态的第三方库。它是基于Redux架构的,提供了一种在React应用中高效管理状态的方式。

虎哥LoveDroid 7284

实战解析:从Innovus到Calibre的LVS错误排查全流程

本文详细解析了从Innovus到Calibre的LVS错误排查全流程,涵盖物理验证关键步骤与工具链协同。通过实战案例分享,重点解决器件不匹配、连接性错误等常见问题,并提供GDS导出规范、网表修正策略等实用技巧,帮助工程师高效完成芯片设计物理验证。

9o8p7i6u5y的博客 1037

React学习---Redux、zustand

Redux它以集中式 Store(centralized store)的方式对整个应用中使用的状态进行集中管理,其规则确保状态只能以可预测的方式更新。

m0_58069590的博客 1303

镜头调焦的 调整的是焦距还是像距?

在镜头 “调焦”(即日常拍照时的)中,调整的核心是,而非焦距。

AIoT深度探索者 | 嵌入式系统架构师 深耕物联网(IoT)与人工智能(AI)融合技术,聚焦​​边缘计算、图像开发、低功耗通信协议​​,致力于智能硬件,关注我获取最新技术文章信息与海量资源~ 1352

200、从反激到LLC:工程师的成长之路

文章摘要: 本文以工程师视角探讨从反激式到LLC电源设计的思维转变。通过48V通信电源故障案例,揭示LLC谐振电容ESR温度特性引发的隐患,强调LLC需精确计算与测试。对比反激与LLC的核心差异:反激需控制寄生参数(如漏感尖峰、电容ESR),而LLC的关键在于频率响应和死区时间优化。作者提出三大思维转变:从匝比计算转向增益曲线分析,从时域波形观察转向频域频谱诊断,从元件更换转向参数调整。最后给出实战建议,包括建立故障库、关注元件参数细节及示波器调试技巧,指出工程师需从"控制"思维升级为"谐振"思维,实现技术

Jack010169的博客 322

React 之 redux 详解

状态管理是指在应用中维护数据状态的过程。随着应用不断变大,维护和同步数据状态的复杂度也会变得更高,因此状态管理是一个重要的问题。Redux 是一种 JavaScript 库,用于管理应用的全局状态。它的目的是帮助开发者管理和同步应用中的数据状态,以实现组件间的数据共享和通信。Redux 遵循了一种单向数据流的架构模式,将整个应用的状态数据存储在一个全局的状态树(即 store)中,并通过明确的操作,比如 dispatch 一个 action,来修改数据状态。

subsistent的博客 5185

SOI LDMOS器件的Sentaurus TCAD建模与关键电学特性仿真研究

本文研究了SOI LDMOS器件的TCAD建模与电学特性仿真。通过Sentaurus TCAD平台建立了单RESURF结构的SOI LDMOS模型,详细阐述了器件结构原理和RESURF耐压机制。研究采用SDE进行几何定义和掺杂配置,在Sentaurus Device中构建了完整的物理模型体系,包括迁移率、复合和碰撞电离模型。通过系统仿真提取了器件的转移特性、输出特性和击穿特性等关键参数,分析了各参数对性能的影响规律。研究结果为功率半导体器件的仿真建模提供了规范化参考,有助于优化SOI LDMOS的性能设计。

huanghm88的专栏 134

WordPress React Redux 主题教程

WordPress React Redux 主题教程 1. 项目介绍 a-wp-react-redux-theme 是一个基于 ReactJS 和 Redux 构建的 WordPress 主题。该项目利用 WordPress 的 WP-REST-API 获取内容,并通过 React 和 Redux 进行前端渲染。这种架构使得主题具有高度的可扩展性和灵活性,适合需要复杂交互和动态内容的网站。 2. ...

gitblog_01175的博客 1121

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

视频教程-2020全新React16.12第二季:Redux/React-Redux/Redux-Thunk-ReactJS

2020全新React16.12第二季:Redux/React-Redux/Redux-Thunk ...

weixin_33867262的博客 201

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

React-redux使用教程

react-redux,Redux 是 JavaScript 应用的状态容器

xm1037782843的博客 3318

【React】基础版React + Redux实现教程,自定义redux库,Redux Toolkit教程

本项目是一个 redux 迷你实现,旨在帮助学习 redux 的状态管理机制,包括storeactionreducerdispatch等核心概念。项目地址:https://github.com/YvetW/redux-mini-demo 注:多个版本,运行前请先修改src名称。

要么孤独,要么庸俗 942

React ,Redux 教程汇总

  学习React、Redux大概半个月了,总结一下看过的资料,此教程比较适合新手。        一. 中文资料       1. w3cschool教程       传送门 =》https://www.w3cschool.cn/react/react-ah5n28ey.html    2. React 入门实例教程 (阮一峰, 2015/03)        一篇全面又易懂的React 入门教...

iamcrystal94的博客 597

React Redux Ant Design 项目教程

React Redux Ant Design 项目教程 1. 项目介绍 react-redux-antd 是一个基于 React、Redux 和 Ant Design 的开源项目,旨在为开发企业级应用(如 CMS、ERP、Admin 系统)提供一个快速搭建的框架。该项目结合了 React 的组件化开发、Redux 的状态管理以及 Ant Design 的 UI 组件库,使得开发者能够高效地构建复杂...

gitblog_00751的博客 875

React Redux 教程

React Redux 教程 项目介绍 react-redux-egitim-seti 是一个开源项目,旨在帮助开发者学习和掌握 React 和 Redux 的结合使用。该项目提供了丰富的示例代码和教程,涵盖了从基础到高级的各种应用场景。通过学习该项目,开发者可以深入理解 React 组件化开发和 Redux 状态管理的原理,并能够独立开发复杂的 React 应用。 项目快速启动 1. 克隆项目 ...

gitblog_01033的博客 601

视频教程-React前端框架技术集 React+Redux-ReactJS

React前端框架技术集 React+Redux 知识传播美丽,分享传递快乐...

weixin_33379565的博客 212

Redux and React-redux 莞式教程(新手必看)

Redux and React-redux 莞式教程(新手必看) 为了方便使用者使用,这里就redux和react-redux 一并讲究使用了,会了react-redux,redux也就没问题了,只不过稍微封装了一下 教程方式 我们先讲理论,先明白 render、action、 store 、connect 、 dispatch 、{ mapStateToProps mapDispat...

Chad97的博客 9537

React-Redux 使用教程

React-Redux 使用教程 【免费下载链接】react-redux 项目地址: https://gitcode.com/gh_mirrors/rea/react-redux ...

gitblog_01013的博客 357

React Redux Ducks 项目教程

React Redux Ducks 项目教程 1. 项目介绍 React Redux Ducks 是一个基于 Redux 的状态管理库,它采用了一种称为 "Ducks" 的模块化模式。Ducks 模式将 Redux 的 actions、action types 和 reducers 打包在一起,使得状态管理更加模块化和易于维护。这个项目旨在帮助开发者更高效地组织和管理 Reac...

gitblog_00906的博客 702

React Redux 教程项目文档

React Redux 教程项目文档 项目介绍 React_Redux_Tutorial 是一个开源项目,旨在帮助开发者快速上手使用 React 和 Redux 进行前端开发。该项目提供了一个完整的示例应用,展示了如何将 Redux 与 React 结合使用,管理应用的状态。通过这个项目,开发者可以学习到 Redux 的基本概念、核心 API 以及如何在实际项目中应用这些知识。 项目快速启动 1....

gitblog_00041的博客 797

React Native Redux Router 项目教程

React Native Redux Router 项目教程 1. 项目介绍 react-native-redux-router 是一个用于 React Native 应用的路由管理库,结合了 Redux 状态管理,使得路由状态可以与应用状态同步。该项目旨在简化 React Native 应用中的导航逻辑,提供一种更直观的方式来管理页面跳转和状态。 2. 项目快速启动 安装依赖 首先,确保你已经安...

gitblog_00574的博客 585

React Navigation Redux Helpers 使用教程

React Navigation Redux Helpers 使用教程 1. 项目介绍 react-navigation-redux-helpers 是一个用于将 React Navigation 的状态管理与 Redux 集成的工具包。它提供了 Redux 中间件和实用工具,使得开发者可以在 Redux 中管理 React Navigation 的状态。这个项目的主要目的是简化在 Redux 和...

gitblog_00956的博客 831
上一篇: nodejs.ForbiddenError: invalid csrf token,egg中post失败解决方案
下一篇: MySQL 服务正在启动 . MySQL 服务无法启动。 服务没有报告任何错误。
TE杨
博客等级 码龄7年 56粉丝 124原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值