当前位置: 首页 > 面试题库 >

在Typescript React App中指定特定的道具并接受常规的HTML道具

申浩广
2023-03-14
问题内容

我有一个React Wrapper组件,它接受一些道具,但将所有其他道具转发给子组件(尤其是对诸如className,id等本机道具的relevent)。

但是,当我通过本地道具时,打字稿抱怨。查看错误消息:

TS2339:类型’IntrinsicAttributes和IntrinsicClassAttributes <包装器>&Readonly
<{子代?:ReactNode;}>和Readonly ”。

我如何获得带有特定道具的组件,该组件也接受本机道具( 接受任何道具并放弃类型检查)?

我的代码如下所示:

interface WrapperProps extends JSX.IntrinsicAttributes {
  callback?: Function
}

export class Wrapper extends React.Component<WrapperProps>{
  render() {
    const { callback, children, ...rest } = this.props;
    return <div {...rest}>
      {children}
    </div>;
  }
}

export const Test = () => {
  return <Wrapper className="test">Hi there</Wrapper>
}

仅供参考:我在这里找到了类似的问题,但是答案基本上放弃了类型检查


问题答案:

我们可以看看divprops的定义方式:

interface IntrinsicElements {
    div: React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>;
}

如果将其React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>,HTMLDivElement>用作基本类型,则将具有的所有属性div。由于DetailedHTMLProps刚刚添加refReact.HTMLAttributes<HTMLDivElement>我们可以将其用作获取所有div属性的基本接口:

interface WrapperProps extends React.HTMLAttributes<HTMLDivElement> {
  callback?: Function
}

export class Wrapper extends React.Component<WrapperProps>{
  render() {
    const { callback, children, ...rest } = this.props;
    return <div {...rest}>
      {children}
    </div>;
  }
}

export const Test = () => {
  return <Wrapper className="test">Hi there</Wrapper> // works now
}


 类似资料:
  • 问题内容: 当我将商店从道具传递到其他组件时,它变得不确定。我正在使用时会发生这种情况,但如果没有这种情况,它会很好。路线部分 路线在组件中 布局方法 我正在像这样通过应用程序组件传递商店 该商店将从这样的布局组件转到主体组件 在主体组件中,我是从正在node.js服务器中运行的api获取的 我在功能中出现错误 错误 无法读取未定义的属性“地图” 奇怪的是,当我在没有路线的情况下工作时,一切都会好

  • 如果我想做以下事情: 它将在两种情况下评估变量,因此在其中一种情况下,我得到类似第1个场景和在第二个场景中。 如果可能的话,我会避免硬编码这个值,我读过关于的文章,但没有使用它,有一个独立的文件来生成时间戳听起来很有趣。 我正在使用空手道网络,你对如何实现这一点有建议吗?:) 谢谢

  • 我知道这个问题有很多答案,但我找不到一个能完全解决我问题的答案。我得到以下错误:

  • 我是一个相当新的反应,这是一个我正在努力解决的问题。

  • 我试图通过反应路由器将道具从一个组件传递到另一个组件。当我试图从子组件获取道具时,我得到了这样一条消息。这是我的代码: Tracks.jsx: app.jsx: Album.jsx:

  • 我开始使用discord.js编程一个discord bot,但我无法找到一种方法让bot将接收到的消息重定向到服务器上的一个特定通道中作为嵌入式。 以下是我目前为止的代码: PS:你大概可以看得出来,我对JS是个新手。 编辑:我设法让它工作起来,它发送聊天中收到的每一条消息,但也发送每一个回答()。有没有一种方法可以跳过特定内容的消息,有没有一种方法可以将重定向的消息放在带有日期、作者和消息的嵌

  • 情况: 我想做的事: 问题: 我只能指定一个propType?我如何允许两种不同的道具组合成一种? 谢谢

  • 我试图通过使用src属性的props路径来显示带有img标记的图像。 我试着用更改路径,用使用整个路径,在组件中添加,并且只传递文件名()作为道具。我总是显示默认的断开图像。在浏览器中检查时,路径看起来很好。当我直接显示图像时,我可以看到路径被解析为不同的路径