首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

添加道具的高阶组件的子组件的Typescript类型

是指在React开发中,通过高阶组件(Higher-Order Component,HOC)将一些通用的逻辑封装起来,以便在多个组件中复用。在这种情况下,子组件是指被高阶组件包裹的组件。

在Typescript中,可以使用泛型(Generics)来定义高阶组件的子组件的类型。具体实现如下:

代码语言:txt
复制
import React, { ComponentType } from 'react';

// 定义高阶组件的类型
type HigherOrderComponent<T> = ComponentType<T> & {
  // 高阶组件的属性
  hocProp: string;
};

// 子组件的属性类型
type ChildComponentProps = {
  prop1: string;
  prop2: number;
};

// 子组件
const ChildComponent: React.FC<ChildComponentProps> = ({ prop1, prop2 }) => {
  return (
    <div>
      <p>Prop 1: {prop1}</p>
      <p>Prop 2: {prop2}</p>
    </div>
  );
};

// 高阶组件
const withProps: HigherOrderComponent<ChildComponentProps> = (WrappedComponent) => {
  const EnhancedComponent: React.FC<ChildComponentProps> = (props) => {
    return <WrappedComponent hocProp="HOC Prop" {...props} />;
  };

  return EnhancedComponent;
};

// 使用高阶组件包裹子组件
const EnhancedChildComponent = withProps(ChildComponent);

// 使用示例
const App: React.FC = () => {
  return <EnhancedChildComponent prop1="Hello" prop2={123} />;
};

在上述示例中,我们定义了一个高阶组件类型HigherOrderComponent<T>,它接受一个泛型参数T,表示子组件的属性类型。子组件的属性类型ChildComponentProps定义了prop1prop2两个属性。

然后,我们定义了一个子组件ChildComponent,它接受ChildComponentProps作为属性类型。

接下来,我们定义了一个高阶组件withProps,它接受一个被包裹的组件WrappedComponent,并返回一个增强后的组件EnhancedComponent。在EnhancedComponent中,我们将高阶组件的属性hocProp添加到子组件的属性中,并通过{...props}将子组件的其他属性传递给子组件。

最后,我们使用withProps高阶组件包裹ChildComponent,得到增强后的组件EnhancedChildComponent。在使用示例中,我们可以看到EnhancedChildComponent接受了prop1prop2属性,并且还具有高阶组件的属性hocProp

这样,我们就实现了添加道具的高阶组件的子组件的Typescript类型。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Vue高阶组件_高阶组件承上启下

大家好,又见面了,我是你们朋友全栈君。 ---- 一、高阶组件概念 何谓高阶组件?类比高阶函数定义:将函数作为参数函数就是高阶函数,那么,将组件作为参数组件就是高阶组件。...二、目标 假如我们有一个组件,我们希望通过某个函数,去扩展它,得到一个新组件,新组件有完全参数组件行为,如果这点可以满足,那么其他扩展就可以针对性进行处理了。...组件最重要三个功能就是事件、属性以及插槽,通过函数得到新组件如果能完全复制参数组件这三项能力,那么这个函数就是一个合格高阶组件。...三、思路 通过组件render函数基于参数组件模板进行属性、事件乃至插槽捆绑 四、准备 我们先定义一个baseComp,一个函数hoc.js,将baseComp传入得到wrapperComp baseComp.vue...1、Discussion: Best way to create a HOC https://github.com/vuejs/vue/issues/6201 2、探索Vue高阶组件 http://hcysun.me

46420

vue 修改引入组件样式_vue组件组件布局

意义 vue被广大前端推崇很重要一点就是组件封装,但是在组件封装时候,组件可能在各处都要用到,但是在各处样式可能不太一样,例如:按钮组件,这时怎么办,难道不同样式但是结构相同组件进行多次封装么?....el-main { margin-top: 40px; margin-left: 37px; background-color: burlywood; } 组件...,必须得熟练掌握vue组件class和style绑定,这样才能游刃有余 2、除了这中传值来改变组件样式,当然还是通过行内样式,或者给组件添加一个class类来改变组件样式 当在一个自定义组件上使用...class property 时,这些 class 将被添加到该组件根元素上面。...', { template: 'Hi' }) //然后在使用它时候添加一些 class: <my-component class="baz

1.4K40
  • React中高阶组件

    ,在反向继承中我们可以做非常多操作,修改state、props甚至是翻转Element Tree,反向继承有一个重要点,反向继承不能保证完整组件树被解析,也就是说解析元素树中包含了组件(函数类型或者...Class类型),就不能再操作组件组件了。...高阶组件HOC属于函数式编程functional programming思想,对于被包裹组件时不会感知到高阶组件存在,而高阶组件返回组件会在原来组件之上具有功能增强效果,基于此React官方推荐使用高阶组件...=> Component,输出类型与输入类型相同函数很容易组合在一起。...如果将ref添加到HOC返回组件中,则ref引用指向容器组件,而不是被包装组件,这个问题可以通过React.forwardRef这个API明确地将refs转发到内部组件。。

    3.8K10

    vue 父组件调用组件函数_vue组件触发父组件方法

    1、使用场景 项目里将element-uiel-upload写成公共组件方便调用,官方before-upload方法用于处理上传前要做事,如:比较文件大小,限制文件类型等,通过返回true 或 false...当该组件调用父组件方法,并且要能获取到父组件方法返回值,如何实现? 2、问题说明 通常组件调用父组件方法:this....$emit(方法名, 传参1, 传参2),但是此方法返回值是vue对象,而不是父组件方法return值。此时要用到高阶函数,传函数作为参数,父组件里执行该函数。...} } } 另一种实现方法:通过传Function,组件可获取到父组件方法。...export default { props: { // 组件接收函数 beforeUpload: { type: Function

    2.9K20

    组件传对象给父组件_react组件改变父组件状态

    大家好,又见面了,我是你们朋友全栈君。...组件传值给父组件 首先 组件组件名“Child”)内定义一个方法 例如 sendData = () => { let data = ‘1234’; this.props.getData(data...); //这个this,props.xxx 后面的xxx是是在父组件那使用名字; }, 然后可以在render函数后使用这个方法或者另外定义一个事件去触发该方法进行传值, 之后可在父组件(Parent...)内使用这个方法获取拿到值: Parent组件内:首先定义一个方法getData或者其他什么都可以随便取 ,这里this.getData这个方法是你随便取那个,例如getData=this.xxx...都可以,但是你这里是this.xxx,父组件内定义方法就必须名字叫xxx, 然后就是 xxx = (data) => { console.log(data); //此时就会打印 组件传给父组件

    2.8K30

    react组件向父组件传递数据_react组件改变父组件状态

    大家好,又见面了,我是你们朋友全栈君。...本博客代码是 React 父组件组件相互传值 demo;实现封装一个折线图,折线图选择下拉框,获取下拉框点击值并且传给父组件根据下拉框筛选条件更新视图;效果图如下: 父组件代码: 代码解析:...父组件 Parent 引用组件 Sub ,传递了 list 组件组件,并且接收组件传递给父组件 storeId ; import React, { Component } from 'react...{'storeId':1,'name':'li'},{'storeId':2,'name':'jay'}], }; storeId=(value)=> { console.log('组件传递给父组件值...如发现本站有涉嫌侵权/违法违规内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

    3.6K30

    react 高阶组件代理模式

    来看看下面的文章描述: react 高阶组件 在目前前端社区,『推崇组合,不推荐继承(prefer composition than inheritance)』 什么是高阶组件?...一个高阶组件只是一个包装了另外一个组件 react 组件。...React.Component,E(Enhanced Component) 指返回高阶 React 组件。...代码复用,逻辑抽象,抽离底层准备(bootstrap)代码 渲染劫持 State 抽象和更改 Props 更改 可用地方非常多,下面我们先来实现一个高阶组件 高阶组件实现 当然其中实现方法主流包括我们上面提到...未完待续 高阶组件有很多知识点,后续补上,本次为了给前面两篇文章装饰器用到高阶组件做解释。

    81920

    vue父组件操作组件方法_vue父组件获取组件数据

    大家好,又见面了,我是你们朋友全栈君。 父组件组件 我们经常分不清什么是父组件,什么是组件。...现在来简单总结下:我们将某段代码封装成一个组件,而这个组件又在另一个组件中引入,而引入该封装组件文件叫做父组件,被引入组件叫做组件。...,数据是从父组件data中传入到了组件组件通过props与父组件绑定 Prop 类型 上面的例子我们把props定义成为了一个数组,用于接收来自父组件数据。...传父场景,通常是组件传递事件给父组件监听,告诉父组件用户点击了哪个按钮,使用函数是$emit vm....当我们父组件中需要使用组件函数或者属性值,我们可以使用$refs,它返回类型是Object,先看如下代码 <button

    7K10

    vue组件传值给父组件_组件调用父组件方法

    spm_id_from=trigger_reload 原理: 在父组件引用组件时,通过事件绑定机制把一个方法aaaa引用传给组件,这个方法中可以有各种参数,组件在触发自己函数或者某些数据发生变化时...console.log('父组件方法') } 步骤①:在组件被调用标签中,绑定一个父组件方法引用 父组件通过事件绑定机制,也就是 @sendSon="fatherMethods" 方式传值给组件..., 注意,这里是方法引用,换句话就是把这个方法传递给组件,而不是方法执行完以后值,所以这里不能加括号 目的:把父组件一个方法传给组件 步骤② 给组件写一个引发事件 组件中写一个事件会触发一个组件本身方法...$emit操作父组件传过来sendSon方法绑定组件方法引用fatherMethods,这时就触发了父组件方法 换句话说:组件通过$emit出发了从父组件传过来方法 sonEdit(){...$emit('sendSon') } 步骤④ 组件在调用父组件时,传参数 真正组件中并没有调用这个show方法,只有传给组件中调用了,调用就可以传参数,那么就在组件中触发时候传参数

    4.2K20
    领券