繁体   English   中英

将 SVG React 组件作为道具传递

[英]Passing SVG React Component as Props

我试图将 SVG React 组件作为道具传递,并收到错误JSX element type 'Icon' does not have any construct or call signatures. 我试图根据需要制作 Icon 属性或将 Icon 类型设为任何类型,但我遇到了同样的错误。

 import React from "react"; import {ReactComponent as RecentGamesIcon } from "../../static/images/icon_recent_games.svg"; import CollapsibleArea from "../collapsible-area"; const SeoSectionContainer = (): JSX.Element => { return ( <div> <CollapsibleArea mainText={testMainTest} helpText={testHelpText} Icon={<RecentGamesIcon />} /> </div> ); };
 <script src="https://cdnjs.cloudflare.com/ajax/libs/react/16.6.3/umd/react.production.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.6.3/umd/react-dom.production.min.js"></script>

 import React from "react"; type TProps = { mainText: string; items?: JSX.Element[]; Icon?: JSX.Element; }; const CollapsibleArea = ({ Icon, items, mainText }: TProps): JSX.Element => { return ( <div> {!!Icon && <Icon />} <div>{mainText}</div> </div> ); };
 <script src="https://cdnjs.cloudflare.com/ajax/libs/react/16.6.3/umd/react.production.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.6.3/umd/react-dom.production.min.js"></script>

`

像这样尝试

import React from "react";
import RecentGamesIcon  from "../../static/images/icon_recent_games.svg";
import CollapsibleArea from "../collapsible-area";

const SeoSectionContainer = (): JSX.Element => {

  return (
<div>
   <CollapsibleArea mainText={testMainTest} helpText={testHelpText} Icon={RecentGamesIcon} />
</div>

); };

在可折叠区域文件中

import React from "react";

type TProps = {
  mainText: string;
  items?: JSX.Element[];
  Icon?: JSX.Element;
};

const CollapsibleArea = ({ Icon, items, mainText }: TProps): JSX.Element => {
  return (
    <div>
      {!!Icon && <img src={Icon}/>}
      <div>{mainText}</div>
    </div>
  );
};

感谢您的回答,但您的变体不起作用。 没什么,我已经找到了解决方案。 图标是 JSX 元素:它需要像这样调用 - <div>{Icon}</div> ,但我像 React 组件一样调用它 - <div><Icon /></div>

 import React from "react"; type TProps = { mainText: string; items?: JSX.Element[]; Icon?: JSX.Element; }; const CollapsibleArea = ({ Icon, items, mainText }: TProps): JSX.Element => { return ( <div> {!!Icon && Icon} <div>{mainText}</div> </div> ); };

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM