Javascript 在子道具上指定onClick时出错
我在那里 考虑到这两个组成部分:Javascript 在子道具上指定onClick时出错,javascript,reactjs,typescript,Javascript,Reactjs,Typescript,我在那里 考虑到这两个组成部分: const Link: React.FC<{ clicked?: () => {}; Icon: OverridableComponent<SvgIconTypeMap<{}, 'svg'>>; children: string; }> = ({ Icon, children, clicked }) => { return ( <div className='
const Link: React.FC<{
clicked?: () => {};
Icon: OverridableComponent<SvgIconTypeMap<{}, 'svg'>>;
children: string;
}> = ({ Icon, children, clicked }) => {
return (
<div className='sidebarLink' onClick={clicked}>
<Icon />
<p>{children}</p>
</div>
);
};
const Navbar: React.FC<INavbar> = ({ setPage }) => {
return (
<nav className='sidebarOptions'>
<section>
<Link Icon={GamesIcon}>Better Games</Link>
<Link Icon={HomeIcon}>Home</Link>
<Link Icon={StoreIcon}>Store</Link>
<Link Icon={DashboardIcon} onClick={() => setPage('library')}>
Library
</Link>
<Link Icon={PeopleAltIcon}>Friends</Link>
<Link Icon={EmojiEmotionsIcon}>Unreal Engine</Link>
</section>
<section className='section2'>
<p>Downloads</p>
<p>Settings</p>
<p>user</p>
</section>
</nav>
);
};
常量链接:React.FC{};
图标:可覆盖组件;
儿童:弦;
}>=({Icon,children,clicked})=>{
返回(
{儿童}
);
};
常量导航栏:React.FC=({setPage})=>{
返回(
更好的游戏
家
商场
setPage('library')}>
图书馆
朋友
虚幻引擎
下载
背景
使用者
);
};
我得到这个错误:
类型“{children:string;Icon:OverridableComponent;onClick:()=>void;}”不可分配给类型“IntrinsicAttributes&{clicked:(()=>{})|未定义;Icon:OverridableComponent;children:string;}&{……}”。
属性“onClick”不存在于类型“IntrinsicattAttributes&{clicked:(()=>{})|未定义;图标:OverridableComponent;子项:string;}&{…}”。ts(2322)
“单击”的正确类型是什么
注意。
链接
组件需要一个名为单击
,而不是单击
的道具-重命名它
<Link Icon={DashboardIcon} clicked={() => setPage('library')}>
Library
</Link>
无论如何,如果
setPage
确实返回了某些内容,请将空白更改为它返回的内容。Link
组件需要一个名为clicked
的道具,而不是onClick
-重命名它
<Link Icon={DashboardIcon} clicked={() => setPage('library')}>
Library
</Link>
无论如何,如果
setPage
确实返回了某些内容,请将空白更改为返回的内容。哦,我的错。我不知不觉地完成了。无论如何这样指定可以吗?是不是太遗传了?@nishi你是说普通的?不,这样申报道具没关系。你可以随意调用你的道具。我指的是通用的,因为你也可以调用clicked?:函数。但这并不是一点描述性的,也可能导致问题。@nishi函数不是泛型函数,您可能无法键入函数返回的内容。void的定义实际上非常具体。它说“这是一个不带参数也不返回任何内容的函数”。而Function
只是说“这是一个函数”。您无法将需要参数的函数分配给void()=>哦,糟糕。我不知不觉地完成了。无论如何这样指定可以吗?是不是太遗传了?@nishi你是说普通的?不,这样申报道具没关系。你可以随意调用你的道具。我指的是通用的,因为你也可以调用clicked?:函数。但这并不是一点描述性的,也可能导致问题。@nishi函数不是泛型函数,您可能无法键入函数返回的内容。void的定义实际上非常具体。它说“这是一个不带参数也不返回任何内容的函数”。而Function
只是说“这是一个函数”。无法将需要参数的函数分配给()=>void
。