Stellen Sie sich vor, Sie erstellen einen wiederverwendbaren Dies ist ein typisches Szenario, wenn Ihr HTML semantischer und SEO-freundlicher sein soll. Die Lösung besteht darin, den Verbraucher entscheiden zu lassen, welches HTML-Tag zum Rendern der Komponente verwendet werden soll. Das ist nichts Neues. Ohne die „as“-Requisite müssten Sie für jeden Anwendungsfall separate Komponenten erstellen, und das macht keinen Sinn. Tu es nicht! So verwenden Sie die „as“-Requisite Und das ist die Komponentendefinition React hilft uns bei Typescript-Typen. Als Alternative zu React.ElementType können Sie oder Das obige ist der detaillierte Inhalt vonDynamisches HTML-Tag in React Components mit der Requisite „as'.. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!
Die „as“-Requisite
Es handelt sich um einen branchenüblichen „Ansatz“, der es Ihnen ermöglicht, dynamisch zu entscheiden, welches HTML-Tag zum Rendern der Komponente verwendet werden soll. Viele React Components-Bibliotheken verwenden es, wie Chakra UI und Material UI.
import { Section } from './section';
const App = () => {
return (
<div>
<Section as="section">CTA</Section>
<Section as="article">My Article</Section>
<Section>This use the default HTML tag of the component</Section>
</div>
);
};
type SectionProps = {
as?: React.ElementType,
children: React.ReactNode,
}
export const Section = (props: SectionProps) => {
const { as: Tag = 'div', children } = props;
return <Tag>{children}</Tag>;
}
Typescript-Unterstützung für die „as“-Requisite
Mit dem von React bereitgestellten Typ React.ElementType des Typoskripts erhalten Sie eine automatische Vervollständigung für Ihre IDE, etwa so
verwenden
type SectionProps = {
as?: keyof JSX.IntrinsicElements,
children: React.ReactNode,
}
type SectionProps = {
as?: keyof HTMLElementTagNameMap,
children: React.ReactNode,
}