首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >社会图标组件的多态类型记录组件

社会图标组件的多态类型记录组件
EN

Stack Overflow用户
提问于 2021-12-24 06:10:21
回答 1查看 114关注 0票数 0

我正在尝试为社会图标创建一个多态组件

代码语言:javascript
复制
import React from 'react';
import styles from 'styles/pro.module.scss';
import {
  Facebook, Instagram, Pinterest, Twitter,
} from 'react-bootstrap-icons';
import { Button } from 'react-bootstrap';
 

type SocialButtonProps =React.PropsWithChildren<{
  network: 'Instagram' | 'Facebook' | 'Pinterest' | 'Twitter' ;
    url: string ;
}>;

const SocialButton = ({
  url, network: Network, children,
}: SocialButtonProps) => (

  <Button className={`rounded-pill p-2 pro_${Network}`} variant="secondary" href={url} target="_blank">
    <Network className="fs-3 fw-bold" />

  </Button>
);


export default SocialButton;

它在<Network className="fs-3 fw-bold" />上给了我以下错误

代码语言:javascript
复制
Property 'Facebook' does not exist on type 'JSX.IntrinsicElements'.ts(2339)
Property 'Instagram' does not exist on type 'JSX.IntrinsicElements'.ts(2339)
Property 'Pinterest' does not exist on type 'JSX.IntrinsicElements'.ts(2339)
Property 'Twitter' does not exist on type 'JSX.IntrinsicElements'.ts(2339)

知道我在这里错过了什么吗。

EN

回答 1

Stack Overflow用户

发布于 2021-12-24 07:07:16

Facebook, Instagram, Pinterest, Twitter是组件,而不是字符串。您需要键入network作为这些组件的任何类型(您可以使用typeof获取变量的类型:

代码语言:javascript
复制
type SocialButtonProps =React.PropsWithChildren<{
  network: typeof Instagram | typeof Facebook | typeof Pinterest | typeof Twitter ;
    url: string ;
}>;

const SocialButton = ({
  url, network: Network, children,
}: SocialButtonProps) => (

  <Button className={`rounded-pill p-2 pro_${Network}`} variant="secondary">
    <Network className="fs-3 fw-bold" />

  </Button>
);

操场连接

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

https://stackoverflow.com/questions/70470033

复制
相关文章

相似问题

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