React: HOC高阶组件的使用

主要用于组件复用

首先定义以下组件(UlCom)信息

import React from "react";
import LiCom from './components/LiCom';
import { withHocCom }  from "./HocCom";
import { Data } from './hocType';

const Hoc: React.FC<{ liData: Data[] }> = ({ liData }) => {
  return <>
    <h1>HOC高阶组件的使用</h1>
    <ul>
      {
        liData.map(data => {
          return <LiCom key={ data.id } data={ data }></LiCom>
        })
      }
    </ul>
  </>
}
export default withHocCom(Hoc);

LiCom组件

import React from "react";
import { Data } from '../../hocType';

interface Props {
  data: Data
}
const LiCom: React.FC<Props> = ({ data }) => {
  const { id, name, mark } = data;
  return <>
    <li>id: { id } ||||||| name: { name } ||||||| mark: { mark }</li>
  </>
}
export default LiCom;

HocType.ts

export interface Data {
  id: number;
  name: string;
  mark: string
}

使用HOC处理UlCom组件的逻辑,注意要withXxx命名规范

HocCom组件

import React from "react";
import { Data } from './hocType';

export const withHocCom = (ChildCom: React.ComponentType<{ liData: Data[] }>) => {
  return (props: any) => {
    const dataValue: Data[] = []
    for(let i = 0; i < 10; i++){
      dataValue.push({
        id: i,
        name: `名字-${i}`,
        mark: `备注-${i}`
      })
    }
    return <ChildCom { ...props } liData={ dataValue } />
  }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Agwenbi

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值