高阶组件具体用法和使用场景

1.什么是高阶组件

高阶组件(HOC)是 React 中用于复用组件逻辑的一种高级技巧。HOC 自身不是 React API 的一部分,它是一种基于 React 的组合特性而形成的设计模式。

具体而言,高阶组件是参数为组件,返回值为新组件的函数。

2.例子

高阶组件

import React from 'react';

export default function HocHour(Com) {
  return class extends React.Component {
    constructor(props) {
      super(props);
      this.state = {
        hour: 0,
      };
    }

    componentDidMount() {
      const p = new Promise(this.getFirstHour);
      let num = 0;
      p.then(res => {
        num += res;
        return new Promise(this.getSecondHour);
      }).then(res => {
        num += res;
        this.setState({ hour: num })
      })
    }

    getFirstHour = (resolve, reject) => {
      setTimeout(() => {
        resolve(3);
      }, 1000);
    }

    getSecondHour = (resolve, reject) => {
      setTimeout(() => {
        resolve(5);
      }, 1000);
    }

    render() {
      return <Com {...this.state} />
    }
  }
}

class组件

import React, { Component } from 'react';
import HocHover from './components/HocHour';

class Index extends Component {
  constructor(props) {
    super(props);
    this.state = {
      number1: 1,
      number2: 2,
    }
  }

  componentDidMount() {
  }

  render() {
    const { hour } = this.props;
    const { number1, number2 } = this.state;

    return <div style={{ padding: '20px' }}>
      <div>{hour}</div>
      <div>{hour + number1}</div>
      <div>{hour + number2}</div>
    </div>
  }
}

export default HocHover(Index);

上面的例子是 在HocHover高阶组件中通过setTimeout模拟接口调用得到的hour值,在Index组件中各个地方使用到。最终在页面两秒后显示如下图:
在这里插入图片描述

总结

千山万水总有情,点赞再走行不行!

  • 5
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值