修饰器&高阶组件
一、修饰器
1、类的修饰
修饰器是一个函数,用来修改类的行为
function testable(target) { target.isTestable = true; } @testable class MyTestableClass { // ... } MyTestableClass.isTestable // true
注意:
修饰器函数的第一个参数,就是所要修饰的目标类
如果有多余参数,只能修饰器外面封装一层函数
function testable(isTestable) { return function(target) { target.isTestable = isTestable; } } @testable(true) class MyTestableClass {} MyTestableClass.isTestable // true @testable(false) class MyClass {} MyClass.isTestable // false
2、方法的修饰
例如:
@bind
修饰器只能用于类和类的方法,不能用于函数,因为存在函数提升。
二、高阶组件
高阶函数:接受函数作为输入,输出一个新的函数
高阶组件:接受react组件作为输入,输出一个新的react组件
通俗讲:在普通组件外面包一层逻辑,就是高阶组件
将功能相同或者相似的代码提取出来封装成一个可公用的函数或者对象
import React from 'react'; export default function withHeader(WrappedComponent) { return class HOC extends React.Component { static displayName = `HOC(${WrappedComponent.displayName || WrappedComponent.name})` state = {} render() { return ( <div> <div className="demo-header"> 我是标题 </div> <WrappedComponent {...this.props} /> </div> ); } }; }
import React from 'react'; import withHeader from '../decorator'; @withHeader export default class Demo extends React.Component { render() { return ( <div> 我是一个普通组件 </div> ); } }
父组件和高阶组件区别:
高阶组件:可以封装公共逻辑,给当前组件传递方法属性,添加生命周期钩子,改善目前代码里业务逻辑和UI逻辑混杂在一起的现状
父组件:UI层的一些抽离
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)