Я пытаюсь создать повторно используемый компонент, который позволяет мне передавать атрибуты href
, target
, rel
вместе с типом значка FontAwesome, который я хотел бы использовать. Я хотел бы иметь возможность передавать столько значков, сколько я хотел бы, в этот список, и он будет отображаться через них, используя социальный компонент в качестве шаблона.
Я бы хотел, чтобы карта появлялась внутри Social.tsx
файла, тогда я могу просто добавить компонент в любое место моего проекта и затем передать ему реквизиты.
Примерно так:
<Social
icons={[
{ icon: "facebook", href: "", target: "", rel: "" },
{ icon: "twitter", href: "", target: "", rel: "" },
{ icon: "discord", href: "", target: "", rel: "" }
]}
/>
У меня в данный момент есть мой компонент:
Social.tsx
import { FontAwesomeIcon } from "@fortawesome/react-fontawesome";
import * as React from "react";
interface ISocial {
href?: string
target?: string
rel?: string
}
const Social: React.FC<ISocial> = (props) => {
return (
<div>
<a href={props.href} target={props.target} rel={props.rel}>
{/* I don't want to hardcode the icon, but dynamically pass it as a prop */}
<FontAwesomeIcon icon={["fab", "discord"]} />
</a>
</div>
);
};
export default Social;
App.tsx
import * as React from "react";
import "./styles.css";
import Social from "./components/Social";
export default function App() {
// I'd like to be able to pass in a list of different icons
// followed by the href, target, rel, etc for each item.
// The Social component would be able to map through them
// and display them.
return <Social />;
Как я могу адаптировать это, чтобы сделать то, что я описано выше?
Вот вам CodeSandBox
Спасибо за любую помощь заранее!