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

郑州营销型网站制作策划/阿里大数据分析平台

郑州营销型网站制作策划,阿里大数据分析平台,网页源代码和框架源代码,小程序数据网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.whsansanxincailiao.cn/news/32007936.html

相关文章:

  • 开平网站建设/优化公司排行榜
  • wordpress优化技巧/网站站内关键词优化
  • 怎么样可以自己做网站/如何做好线上推广
  • 购物网站建设合同/手机百度网页版
  • 重庆高端网站建设公司/百度搜索推广开户
  • 网站 栏目 英语/百度商家入驻怎么做
  • 怎样做QQ网站呢/网站排名优化客服
  • wordpress宠物/博客程序seo
  • 做网页怎么在网站播放视频/今日最新头条新闻条
  • 新网站建设方案ppt/三亚百度推广公司电话
  • 教育网站赏析/seo怎么才能优化好
  • 深圳南山企业网站建设报价/百度搜索收录入口
  • 亦庄做网站/杭州seo全网营销
  • 网站开发需要2个月吗/上海百度seo点击软件
  • 用凡科建设网站/邮件营销
  • 江苏外贸型网站制作/附近电脑培训班位置
  • ppt模板制作教程步骤/谷歌seo推广招聘
  • 网站在什么地方设关键词/重大新闻事件
  • 恶意点击别人的网站/关键词推广方法
  • 枞阳网站建设/nba中国官方网站
  • 化州网站开发公司/互联网公司有哪些
  • 长沙别墅图纸网站建设/培训机构好还是学校好
  • 一台vps两个wordpress网站/北京核心词优化市场
  • 网站推广方法/全网营销整合营销
  • 网站后期增加内容/成品网站源码
  • ebay官网/seo专业培训班
  • 备案的网站 能拿来做仿站吗/武安百度seo
  • 中国纳溪门户网站建设项目环境影响/百度网盘下载安装
  • 微信开放平台是干什么的/广州seo教程
  • 嵊州建设银行取款网站/站长工具域名查询