首页 > 其他分享 >React进阶篇——十二、继承方式实现高阶组件

React进阶篇——十二、继承方式实现高阶组件

时间:2022-10-31 17:36:27浏览次数:51  
标签:return 方式 继承 React 进阶篇 组件 高阶 实现

十二、继承方式实现高阶组件

前面介绍的高阶组件的实现方式都是由高阶组件处理通用逻辑,然后将相关属性传递给被包装组件,我们称这种实现方式为属性代理。除了属性代理,还可以通过继承实现高阶组件:通过继承被包装组件实现逻辑的复用。继承方式实现的高阶组件常用于渲染劫持。

例如,当用户处于登录状态,允许组件渲染;否则渲染一个空组件:

function withPersistentData(WrappedComponent) {
    return class extends WrappedComponent {
        render() {
            if(this.props.loggedIn) {
                return super.render();
            } else {
                return null;
            }
        }
    }
}

继承方式实现的高阶组件对被包装组件具有侵入性,当组合多个高阶组件使用时,很容易因为子类组件忘记通过super调用父类组件方法而导致逻辑丢失。因此,在使用高阶组件时,应尽量通过代理方式实现高阶组件。

标签:return,方式,继承,React,进阶篇,组件,高阶,实现
From: https://www.cnblogs.com/sxww-zyt/p/16845091.html

相关文章

  • java进阶篇——Stream流编程
    Stream流函数式接口1.消费型接口——Consumer@FunctionalInterfacepublicinterfaceConsumer<T>{/***对给定的参数执行此操作。**@param......
  • React Native(windows)--项目环境相关问题
    (一)、命令行一:查看连接的虚拟机或真机:执行命令:adbdevices二:在虚拟机或真机上打包项目执行命令:yarnreact-nativerun-android三:真机或虚拟机调出调试执行命令:adbshe......
  • js/react方法学习
    前言:最近看一个react工程,发现好多预发都不会,看代码如同雾里看花。 conststr='hello'constnewstr=str.split('').reduce(function(prev,current){const......
  • React
    来点前端1.介绍React是一个用于构建用户界面的JavaScript库空模板展示<!DOCTYPEhtml><html><head><metacharset="UTF-8"/><title>HelloWorl......
  • SpringBoot集成Redisson报错RedissonReactiveRedisConnection.close()
    SpringBoot集成redisson-spring-boot-starter报错:点击查看代码2022-10-3109:30:10.255WARN92312---[isson-netty-2-4]io.netty.util.concurrent.DefaultPromise......
  • 面试官:说说React-SSR的原理
    前言所谓同构,简而言之就是,第一次访问后台服务时,后台直接把前端要显示的界面全部返回,而不是像SPA项目只渲染一个<divid="root"></div>剩下的都是靠JavaScript脚本去......
  • 面试官:你是怎样进行react组件代码复用的
    mixinMixin设计模式Mixin(混入)是一种通过扩展收集功能的方式,它本质上是将一个对象的属性拷贝到另一个对象上面去,可以拷贝多个属性到一个对象上,为了解决代码复用问题。常......
  • react框架下GSAP动画插件-ScrollTrigger的使用介绍
    ScrollTrigger插件这个插件是基于GSAP使用的,ScrollTrigger仅仅是用来控制触发动画,而GSAP才是用来操作元素。react框架使用ScrollTrigge,首先是引入ScrollTriggerimport......
  • vue3 reactive函数
    reactive的用法与的用法相似,也是将数据变成响应式数据,当数据发生变化时也会自动更新。不同的是用于基本数据类型,而是用于复杂数据类型,比如对象和数组例如:定义一个对象类型......
  • React父组件使用子组件数据
    TypeScript语言。子组件​​​TopBar.tsx​​:importReact,{createContext}from'react';import{FormInstance}from"antd/lib/form";constformRef=React.createRe......