1.redux中间件

中间件提供第三方插件的模式,自定义拦截 action -> reducer 的过程。变为 action -> middlewares -> reducer。这种机制可以让我们改变数据流,实现如异步action ,action 过滤,日志输出,异常报告等功能

redux-logger:提供日志输出,每次action修改state时,都会在控制台打印出关键信息,便于开发者追溯状态。

// src/store/index.tsx
import {createStore,applyMiddleware} from 'redux'
import logger from 'redux-logger'
import thunk from 'redux-thunk'
const reducer = function(state:any,actions:any){if(!state){return {count:10,msg:'hello redux'}}switch(actions.type){case "PLUS":return {...state,count:state.count+1}break;default:return statebreak}
}
const store =applyMiddleware(logger,thunk)(createStore)(reducer)
export default store
// 异步action,就是指action的值为函数,异步action中一般都会调用同步action,异步action不是必须要用的。

redux-thunk:处理异步操作

// src/store/index.tsx
import React, { useEffect, useState } from 'react';
import yayJpg from '../assets/yay.jpg';
import store from '../store/index'export default function HomePage() {const [user,setuser] = useState(store.getState().count)useEffect(()=>{store.subscribe(()=>{setuser(store.getState().count)})},[])// const upd = ()=>{//   store.dispatch({type:"PLUS"})// }const openFormAsync = () => {// 返回一个函数,参数是dispatch函数,函数里面包含异步操作,且一般要调用同步actionstore.dispatch((dispatch:any,getState:any)=>{setTimeout(() => {console.log(getState())dispatch({type:'PLUS'})},2000)})}return (<div><h2>{user}</h2><p><img src={yayJpg} width="388" /></p><p>To get started, edit <code>pages/index.tsx</code> and save to reload.<button onClick={openFormAsync}>修改</button></p></div>);
}

redux-promise:处理异步操作,actionCreator的返回值是promise

2.React高阶组件

高阶函数(Higher-order function),至少满足下列一个条件的函数

接受一个或多个函数作为输入,输出一个函数

在React中,高阶组件即接受一个或多个组件作为参数并且返回一个组件,本质也就是一个函数,并不是一个组件

高阶组件的主要功能是封装并分离组件的通用逻辑,让通用逻辑在组件间更好地被复用

高阶组件可以传递所有的props,但是不能传递ref

高阶组件能够提高代码的复用性和灵活性,在实际应用中,常常用于与核心业务无关但又在多个模块使用的功能,如权限控制、日志记录、数据校验、异常处理、统计上报等

import React from 'react'
const Gaojie = (Son: any) => {return function () {const arr = {one: '马新明',two: '小黑'}return <Son {...arr} />}
}const Gao = (props: any) => {// console.log(props,'props');return (<div>{props.one}</div>)
}const L=(props:any)=>{return(<div>{props.two}</div>)
}const Fourther=()=>{return(<><One/><T/></>)
}const One = Gaojie(Gao)
const T = Gaojie(L)
export default Fourther

redux中间件+react高阶组件相关推荐

  1. react实现汉堡_利用 React 高阶组件实现一个面包屑导航

    什么是 React 高阶组件 React 高阶组件就是以高阶函数的方式包裹需要修饰的 React 组件,并返回处理完成后的 React 组件.React 高阶组件在 React 生态中使用的非常频繁, ...

  2. 「react进阶」一文吃透React高阶组件(HOC)

    一 前言 React高阶组件(HOC),对于很多react开发者来说并不陌生,它是灵活使用react组件的一种技巧,高阶组件本身不是组件,它是一个参数为组件,返回值也是一个组件的函数.高阶作用用于强化 ...

  3. React高阶组件探究

    React高阶组件探究 在使用React构建项目的过程中,经常会碰到在不同的组件中需要用到相同功能的情况.不过我们知道,去这些组件中到处编写同样的代码并不优雅. 在以往,为了解决以上的情况,我们会用到 ...

  4. react组件类型及深入理解react高阶组件

    React中常见的组件类型及分类: 1.展示组件(Presentational component) 与 容器组件(Container component) 2.类组件(Class component ...

  5. 深入理解 React 高阶组件

    在目前的前端社区,『推崇组合,不推荐继承(prefer composition than inheritance)』已经成为了比较好的实践,mixin 也因为自身的一些问题而渐渐不被推荐.高阶组件(H ...

  6. React高阶组件深入理解

    1. 基本概念 高阶组件是React 中一个很重要且较复杂的概念,高阶组件在很多第三方库(如Redux)中都被经常使用,即使你开发的是普通的业务项目,用好高阶组件也能显著提高你的代码质量. 高阶组件的 ...

  7. [react] 高阶组件(HOC)有哪些优点和缺点?

    [react] 高阶组件(HOC)有哪些优点和缺点? HOC 优点 通过传递props去影响内层组件的状态,不直接改变内层组件的状态,降低了耦合度 缺点 组件多层嵌套, 增加复杂度与理解成本 ref隔 ...

  8. React高阶组件_阶段1

    react高阶组件_阶段1 作用: 个人总结的高阶组件设计的作用主要有两点, 这里直接使用装饰器方式 非装饰器使用请结合我的博文"react基础梳理_阶段1"中的"自定义 ...

  9. react 高阶组件hoc使用

    react 高阶组件hoc使用 1. 为什么使用高阶组件 2. 具体使用 2.1原代码: 2.2 使用hoc封装后 1. 为什么使用高阶组件 高阶组件(HOC)是 React 中用于复用组件逻辑的一种 ...

最新文章

  1. 使用Flink时从Kafka中读取Array[Byte]类型的Schema
  2. 常见网络加速技术浅谈(二)
  3. 从FTP建立连接模式想到的TCP SYNFlood防御
  4. IT项目管理总结:第六章 项目时间管理
  5. SpringCloud Eureka自我保护机制
  6. 【BZOJ1924】【SDOI2010】所驼门王的宝藏(Tarjan,SPFA)
  7. java 静态方法 多线程_Java静态方法的线程安全性问题
  8. 社交界的 Linux,为何败给了 Facebook、Twitter?
  9. 中国人寿诈骗的内幕 (转自杭州网论坛)
  10. 4个步骤教你建立中后台后台通用权限管理系统
  11. 这个是什么错误,求大神解答
  12. 手把手教你绘制积分动图
  13. mysql未开启binlog恢复_无全量备份、未开启binlog日志,利用percona工具恢复delete的数...
  14. (写着玩)Python仿网络游戏《炉石传说》,继上次部分代码展示
  15. 【笔记】IP地址详解、Linux网络及常用命令
  16. 中兴F660端口映射
  17. 张长水:机器学习与图像识别
  18. stm32基于FreeRtos下的电阻触摸屏简易计算器
  19. 查看表空间、schema和表空间下所有表相关理解
  20. 炼丹心得|技术信仰有多重要,我们邀请到了这位大咖来聊聊

热门文章

  1. FISCO BCOS区块链 修改增加RPC接口
  2. C++学习笔记:成员初始化列表【Cherno】
  3. 《炬丰科技-半导体工艺》湿化学清洗过程中晶片污染控制方法
  4. 传感器分类-小白笔记
  5. Fact表的星型结构
  6. java 异或加密 c语言解密,java对文件简单的加密解密(异或运算)
  7. 机器学习集成学习算法
  8. 走进智慧社区感受触手可及的幸福
  9. 软件版本号简易控制规范
  10. 地级市长时间序列气象数据(降水、日照、湿度、风速、气温)