首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >react抛出错误中道具的typescript扩展运算符

react抛出错误中道具的typescript扩展运算符
EN

Stack Overflow用户
提问于 2020-05-07 15:03:21
回答 1查看 465关注 0票数 1

当我在react中使用typescript时,我想跳过每个单独的道具,特别是HTML的本机道具,比如id,name,placeholder等,但我在{...props}上遇到了错误

我已经用InputHTMLAttributes扩展了我的接口,所以typescript不会检查我的道具,但它仍然有未解决的错误

代码语言:javascript
运行
复制
import React, { InputHTMLAttributes } from "react";
import "./styles.css";

interface MyComponentProps extends InputHTMLAttributes<HTMLInputElement> {
  nonNativeProp: string;
  props: object
}

const MyComponent: React.FC<MyComponentProps> = ({
  nonNativeProp,
  props
}) => {
  return <input type="text" {..props} />;
};

export default function App() {
  return (
    <div className="App">
      <MyComponent
        nonNativeProp="abc"
        placeholder="Name"
        name="something"
        id="myInput"
        data-custom="custom-attr"
      />
    </div>
  );
}

https://codesandbox.io/s/elegant-forest-42t4b?file=/App.tsx

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-05-07 15:12:07

首先,您需要使用rest扩展语法来获得道具,而不是像对象那样进行解构

其次,接口不需要将道具定义为对象

最后,您使用{..props}而不是{...props}。注意道具前的3个点

代码语言:javascript
运行
复制
interface MyComponentProps extends InputHTMLAttributes<HTMLInputElement> {
  nonNativeProp: string;
}

const MyComponent: React.FC<MyComponentProps> = ({
  nonNativeProp,
  ...props
}) => {
  return <input type="text" {...props} />;
};

export default function App() {
  return (
    <div className="App">
      <MyComponent
        nonNativeProp="abc"
        placeholder="Name"
        name="something"
        id="myInput"
        data-custom="custom-attr"
      />
    </div>
  );
}

Working demo

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61651733

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档