为了账号安全,请及时绑定邮箱和手机立即绑定

在 ReactJs 中为传递的道具使用打字稿接口

在 ReactJs 中为传递的道具使用打字稿接口

回首忆惘然 2023-04-20 10:13:51
我使用打字稿创建了这个:import React, {FC} from 'react';interface Interface {    name:string,    age:number}const Home: React.FC<Interface> = (info) => {    return (        <div>            <h1>{info.name}</h1>        </div>    );};export default Home;///const info = {name:'Boris', age:45}function App() {  return (    <div className="App">      <Home info={info}/>    </div>  );}展开片段...但是我从打字稿中得到一个错误: Type '{ info: { name: string; age: number; }; }' is not assignable to type 'IntrinsicAttributes & Interface & { children?: ReactNode; }'.   Property 'info' does not exist on type 'IntrinsicAttributes & Interface & { children?: ReactNode; }'问题:如何避免这种情况以及它出现的原因?
查看完整描述

2 回答

?
函数式编程

TA贡献1807条经验 获得超9个赞

这段代码在这里:


interface Interface {

    name:string,

    age:number

}

const Home: React.FC<Interface> = //...

表示该组件Home需要 2 个道具:name和age。


这段代码在这里:


<Home info={info}/>

传入一个名为info.


所以你要么想传入name并age作为道具:


<Home name={info.name} age={info.age}/>

或者你想声明info道具:


interface Props {

    info: {

        name:string,

        age:number,

    }

}

const Home: React.FC<Props> = ({ info }) => { /* ... */ }


// Pass props like:

<Home info={info}/>

(注意({ info })解构赋值,它将infoprop the 赋值给局部变量info。)


查看完整回答
反对 回复 2023-04-20
?
慕工程0101907

TA贡献1887条经验 获得超5个赞

你应该在组件中销毁你的道具Home。


所以应该是


const Home: React.FC<Interface> = ({ info }) => {

  return (

    <div>

      <h1>{info.name}</h1>

    </div>

  );

};


查看完整回答
反对 回复 2023-04-20
  • 2 回答
  • 0 关注
  • 88 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信