当前位置: 首页 > 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/201273.html

相关文章:

  • 怎么成立网站网络推广推广
  • 北京网站建设 标准型 新翼网络营销都具有哪些功能
  • 厨具网站模板许昌seo公司
  • 政府网站建设不合格引擎优化seo是什么
  • 廊坊建站模板系统小姐关键词代发排名
  • 湘潭做网站建设的公司正规赚佣金的平台
  • 公司建网站的步骤是什么贵阳百度seo点击软件
  • 耒阳网站建设2345网址导航
  • 开发商虚假宣传怎么赔偿重庆百度快照优化排名
  • 建材做网销哪个网站好丹东网站seo
  • 大型租车门户网站商业版源码做网页怎么做
  • 聊城做网站比较不错的公司线上宣传渠道
  • 良乡网站建设软文有哪些发布平台
  • 百度推广竞价网站推广seo教程
  • 服装定制公司关键词优化营销
  • 做电商网站一般需要什么流程重庆做seo外包的
  • 网站建设广州杭州seo网站建设靠谱
  • 网站一级导航怎么做品牌推广百度seo
  • wordpress大型门户关键词优化排名软件流量词
  • 快速排名优化个人如何做seo推广
  • 广州专业网站改版方案河南疫情最新情况
  • 网站建设公司新报价百度官方网址
  • 网站按照谁建设 谁负责网站优化推广平台
  • 天元建设集团有限公司青岛第一建筑工程分公司seo咨询邵阳
  • 定州网站建设软文广告案例
  • wordpress腾讯云 COS草根seo视频大全
  • 怎样做网站赚点击量的钱灰色词排名接单
  • 萍乡政法委网站建设招投标互联网金融
  • 做网站的成本费用seo分析
  • 查看网站信息图标怎么做太原建站seo