首页 > 其他分享 >React的高阶组件详解

React的高阶组件详解

时间:2024-05-10 15:12:43浏览次数:22  
标签:function return React token 详解 props 组件 高阶

  1. 接受一个或多个函数作为参数; 返回一个新的函数;
    2 使用场景(页面权限, 某些页面是必须用户登录成功才能进行进入;如果用户没有登录成功,那么直接跳转到登录页面;)

    // 定义一个高阶组件, 用于鉴权的操作
    function loginAuth(WrapperCpn) {
    return props => {
    // 从本地存储中获取token, token有值表示已登录, 没有值表示未登录
    const token = localStorage.getItem("token")
    if(token) {
    return <WrapperCpn {...props}/>
    } else {
    return

    请先登录, 再跳转到对应的页面中


    }
    }
    }

const Cart = loginAuth(function() {
return

购物车页面


})

export class App extends PureComponent {
render() {
return (




)
}
}

3 使用场景( props增强)

// 定义一个高阶组件, 对传入的组件进行props增强
function enhancedProps(WrapperCpn) {
class NewComponent extends PureComponent {
constructor() {
super()

  this.state = {
    userInfo: {
      name: "chenyq",
      age: 18
    }
  }
}

render() {
  // 如果组件本身也有传递参数, 也需要将参数添加进来
  return <WrapperCpn {...this.props} {...this.state.userInfo}/>
}

}

return NewComponent
}

// 调用高阶组件, 对组件进行props增强
const Home = enhancedProps(function(props) {
return

{props.name}-{props.age}


})
const About = enhancedProps(function(props) {
return

{props.name}-{props.age}-{props.names}


})

export class App extends PureComponent {
render() {
return (


{/* 展示增强后的组件 /}

{/
本身也有传递参数 */}
<About names={["aaa", "bbb", "ccc"]}/>

)
}
}

参考文献: https://blog.csdn.net/m0_71485750/article/details/126694889

标签:function,return,React,token,详解,props,组件,高阶
From: https://www.cnblogs.com/zw100655/p/18184392

相关文章

  • react项目中使用lottie动画
    一,引入lottie库点击查看代码npmi--savereact-lottie@types/react-lottie二,下载lottie的json文件去iconfont.cn中可以在库中下载lottie文件(注意版权问题)三,在项目中使用lottie点击查看代码import*asReactfrom"react";importLottiefrom"react-lottie";impo......
  • C#中Linq的去重方式Distinct详解
    一、首先创建一个控制台应用程序,添加一个Person对象usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;usingSystem.Threading.Tasks;namespaceCompare{publicclassPerson{publicstringName{get;set;}......
  • react中使用craco,针对路径转换,修改webpack别名路径配置
    1.0首先下载craco依赖包npminstall@craco/craco-D2.0在项目根目录下面新建craco.config.js文件,里面内容配置为constpath=require('path')module.exports={webpack:{alias:{'@':path.resolve(__dirname,'src')}......
  • 详解Python 中可视化数据分析工作流程
    本文分享自华为云社区《Python可视化数据分析从数据获取到洞见发现的全面指南》,作者:柠檬味拥抱。在数据科学和分析的领域中,可视化是一种强大的工具,能够帮助我们理解数据、发现模式,并得出洞见。Python提供了丰富的库和工具,使得可视化数据分析工作流程变得高效而灵活。本文将介绍......
  • React — 访问 Redux Store 的正确方法是什么?
    在组件中访问Store的最佳方法是使用connect()函数,该函数创建一个包裹现有组件的新组件。此模式称为高阶组件,通常是在React中扩展组件功能的首选方式。这允许您将状态和Action创建者映射到组件,并在Store更新时自动传递它们。使用connect的<FilterLink>组件:import{......
  • XML Schema(XSD)详解:定义 XML 文档结构合法性的完整指南
    XMLSchema描述了XML文档的结构。XMLSchema语言也称为XMLSchemaDefinition(XSD)。 <?xmlversion="1.0"?> <xs:schemaxmlns:xs="http://www.w3.org/2001/XMLSchema">   <xs:elementname="note"> <xs:compl......
  • XML Schema(XSD)详解:定义 XML 文档结构合法性的完整指南
    XMLSchema描述了XML文档的结构。XMLSchema语言也称为XMLSchemaDefinition(XSD)。<?xmlversion="1.0"?><xs:schemaxmlns:xs="http://www.w3.org/2001/XMLSchema"><xs:elementname="note"><xs:complexType><x......
  • RequestBodyAdvice用法详解-参数加解密示例
     在实际项目中,我们常常需要在请求前后进行一些操作,比如:参数解密/返回结果加密,打印请求参数和返回结果的日志等。这些与业务无关的东西,我们不希望写在controller方法中,造成代码重复可读性变差。这里,我们讲讲使用@ControllerAdvice和RequestBodyAdvice、ResponseBodyAdvice来对请......
  • 设计模式详解
    本文结构图:除了类本身,设计模式更强调多个类/对象之间的关系和交互过程——比接口/类复用的粒度更大创建型模式(Creationalpatterns)工厂方法模式(FactoryMethodpattern)工厂方法也被称作虚拟构造器(VirtualConstructor)即定义一个用于创建对象的接口,让子类类决定实例化......
  • thinkphp模型hasOne、hasMany、belongsTo详解
    在ThinkPHP框架中,hasOne、hasMany和belongsTo是用于定义模型间一对多(1:n)、一对一(1:1)和多对一(n:1)关联关系的方法。以下是一些简单的示例来解释这些关系:1.hasOne(一对一关系)假设我们有Author和Profile两个模型,一个作者(Author)有一个个人资料(Profile)://Author模型namespacea......