当前位置: 首页 > wzjs >正文

普陀微信网站建设百度电脑网页版入口

普陀微信网站建设,百度电脑网页版入口,塘下做网站,注册一个公司需要花多少钱1.React 高阶组件(HOC) ****1. HOC(高阶组件)HOC (Higher - Order Component) 定义: 高阶组件是一个接收组件作为参数并返回新组件的函数,用于复用组件逻辑,遵循纯函数特性(无副作用…

1.React 高阶组件(HOC)


****1. HOC(高阶组件)HOC (Higher - Order Component)

定义: 高阶组件是一个接收组件作为参数并返回新组件的函数,用于复用组件逻辑,遵循纯函数特性(无副作用,输出仅依赖输入)。

****优点

  • ****逻辑复用:抽离通用逻辑(如权限校验、数据请求)。
  • ****解耦性:业务组件与公共逻辑分离,提升可维护性。
  • ****组合性:可嵌套使用多个 HOC。

****示例

const withLogger = (WrappedComponent) => {return (props) => {console.log("Rendered:", WrappedComponent.name);return <WrappedComponent {...props} />;};
};

React JSX


****2. 属性代理(Props Proxy)

通过包裹组件并操作其 props`/state` 实现功能增强,不直接修改原组件。

****应用场景

  1. ****Props 增强:添加/修改 ```props`

    const withUser = (WrappedComponent) => {return (props) => (<WrappedComponent {...props} user={currentUser} />);
    };
    

    Plain Text

  1. ****State 管理:封装状态逻辑

    const withToggle = (WrappedComponent) => {return class extends React.Component {state = { isOn: false };toggle = () => this.setState(prev => ({ isOn: !prev.isOn }));render() {return <WrappedComponent {...this.props} isOn={this.state.isOn} toggle={this.toggle} />;}};
    };
    

    Plain Text

  1. ****条件渲染:控制组件渲染逻辑

    const withLoading = (WrappedComponent) => {return (props) => (props.isLoading ? <Spinner /> : <WrappedComponent {...props} />);
    };
    

    Plain Text

  1. ****外部逻辑封装:如事件监听

    const withResize = (WrappedComponent) => {return class extends React.Component {handleResize = () => {/* 处理逻辑 */};componentDidMount() { window.addEventListener('resize', this.handleResize); }componentWillUnmount() { window.removeEventListener('resize', this.handleResize); }render() { return <WrappedComponent {...this.props} />; }};
    };
    

    Plain Text


****3. 反向继承(Inheritance Inversion,类组件专用)

通过继承被包裹组件,直接操作其生命周期和渲染树,实现更底层控制。

****核心能力

  • 拦截生命周期方法(如 ```componentDidMount`)。
  • 修改 state` 或 props`。
  • 操作渲染结果(通过 ```super.render()` 获取 React 元素并修改)。

****示例

  1. ****生命周期拦截

    const withTiming = (WrappedComponent) => {return class extends WrappedComponent {componentDidMount() {console.time("renderTime");super.componentDidMount?.();console.timeEnd("renderTime");}render() { return super.render(); }};
    };
    

    Plain Text

  1. ****修改渲染树

    const withRedBorder = (WrappedComponent) => {return class extends WrappedComponent {render() {const element = super.render();return React.cloneElement(element, { style: { border: "2px solid red" } });}};
    };
    

    Plain Text


****对比属性代理 vs 反向继承
****特性****属性代理****反向继承
控制方式通过包裹组件继承并覆盖原组件方法
生命周期访问无法直接访问可直接拦截/修改
适用场景添加 props/条件渲染/逻辑复用深度定制生命周期或渲染树

****注意事项
  • ****避免修改原组件:HOC 应通过组合而非修改实现功能。
  • ****Ref 传递问题:使用 ```React.forwardRef` 传递 ref 引用。
  • ****命名冲突:确保 HOC 添加的 ```props` 名称不与原组件冲突。

大白话:一个组件接受一个组件作为参数返回新的函数,这个组件就是高阶组件,接受后可以在该组件中两种用法一种是处理数据传回接受到的组件进行渲染,也就是改变props和state,或者进行条件渲染以属性代理的方式,但均不动传进起来的组件,另一种形式是将传进来的组件进行集成,类组件的继承,就拿到了该组件的所有属性包括生命周期,然后可以进行想要的操作返回新的修改过的组件

http://www.dtcms.com/wzjs/180819.html

相关文章:

  • 跨境电商自己做网站卖衣服产品推广文案范例
  • 建筑设计常用软件东莞网站建设seo
  • 来广营做网站今日新闻头条新闻今天
  • 网站登录密码保存在哪里设置网络推广专家
  • 怎么做让自己的网站易观数据
  • flash网站设计教程数据查询网站
  • 安徽网站建设公司排名淘宝搜索关键词查询工具
  • 制作企业网站首页公司软文怎么写
  • 网站竞价难做优化发布信息的免费平台
  • 扬州网站建设小程序媒体代发网站
  • wordpress xreaseo关键词排名优化软件怎么选
  • 做网站首页置顶多少钱百度指数在线查询前100
  • 旅游商业网站策划书怎样制作网页设计
  • 地图网站抓取app拉新一手渠道商
  • 防制网站怎么做新闻头条今日要闻10条
  • 2017设计工作室做网站网站推广 方法
  • 海外营销网站建设百度知道个人中心
  • 网站开发最快框架电脑优化大师有用吗
  • 用thinkcmf做的网站系统优化软件哪个好
  • wordpress 网站静态注册域名费用一般多少钱
  • 银川做网站建设网络营销的应用研究论文
  • 东莞微信网站建设怎样外链怎么打开
  • 网站客户服务方案广东深圳龙华区
  • 网站怎么推广怎么做北京如何优化搜索引擎
  • 招远网站建设价格软文广告的案例
  • php做网站主要怎么布局百度极速版下载安装最新版
  • dede网站模板上海网站设计公司
  • 网站内如何做内部链接天津seo渠道代理
  • 做h5动画的素材网站百度信息流怎么收费
  • 提供虚拟主机服务的网站好用的网站推荐