ReactTS 通过动态组件道具扩展类型?

伊斯特万·奥尔班

是否有可能有一个 React 组件可以动态地找出它有什么道具?

例子:

type BaseType = {
   baseProp?: ...
   as?: ...
}

type Extended = {
   extendedProp?: ...
}

<Base /> // expected props => { baseProp }
<Base as={ExtendedComponent} extendedProp={...} /> // expected props => { baseProp, extendedProp } 
提香·切尔尼科娃-德拉戈米尔

这个答案中我们可以得到一个提示,使用交集首先推断道具的类型,as然后使用这些道具来验证任何额外的属性:

type BaseType = {
  baseProp?: number
}

type Extended = {
  extendedProp?: string
}

declare const ExtendedComponent: React.FC<Extended>
function Base<T = {}>(p: BaseType & { as? : React.ComponentType<T>} & T): React.ReactElement{
  if(p.as) {
    const Child = p.as;
    return <div>{p.baseProp}<Child {...p as T}></Child></div>
  }else {
    return <div>{p.baseProp}</div>
  }
}


let s = <Base /> // expected props => { baseProp }
let a = <Base as={ExtendedComponent} extendedProp="a" /> 

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何通用键入React组件道具和扩展通用道具类型

来自分类Dev

将动态道具绑定到vue组件

来自分类Dev

JSX 动态组件 - 未知道具

来自分类Dev

根据道具更改react组件的类型

来自分类Dev

如何使用样式组件中的道具类型?

来自分类Dev

通过样式作为React组件中的道具

来自分类Dev

如何通过组件键道具滚动到组件?

来自分类Dev

基于prop动态扩展VueJs组件

来自分类Dev

通过同级道具值推断反应道具的类型

来自分类常见问题

React和Typescript:如何扩展通用组件道具?

来自分类Dev

Typscript / React扩展默认功能组件道具时出错

来自分类Dev

React和Typescript:如何扩展通用组件道具?

来自分类Dev

Symfony表单组件独立表单类型扩展

来自分类Dev

如何扩展React功能组件的Prop类型?

来自分类Dev

Nuxt / Vue.js-基于道具动态加载子组件

来自分类Dev

动态选择React组件并将数据作为道具

来自分类Dev

VueJS:动态组件在重新加载后会丢失其道具

来自分类Dev

是否可以动态处理作为道具传递给组件的值?

来自分类Dev

如何通过变量动态调用余烬组件?

来自分类Dev

动态组件:通过引用调用元素

来自分类Dev

通过 props 动态传递 React 组件?

来自分类Dev

输入无法通过动态组件工作

来自分类Dev

将TypeScript类型作为道具传递给React组件?

来自分类Dev

无法通过React DevTools for Chrome修改组件道具

来自分类Dev

在Vue Router中通过多个组件传递道具

来自分类Dev

通过Vue3中的道具传递的组件

来自分类Dev

通过父组件将道具传递给UseEffect挂钩

来自分类Dev

如何通过计算的道具在子组件中设置数据

来自分类Dev

通过数组传递道具时,我的组件未渲染

Related 相关文章

热门标签

归档