想象一下您正在构建一个可重用的 这是一个典型的场景,当您希望 HTML 更加语义化并且 SEO 友好时。 解决方案是让消费者决定应该使用哪个 HTML 标签来呈现组件。 这不是什么新鲜事。 如果没有“as”属性,您需要为每个用例创建单独的组件,这是没有意义的。别这样做! 这就是你使用“as”属性的方式 这是组件定义 React 帮助我们处理 Typescript 类型。 作为 React.ElementType 的替代品,您可以使用 或
“as” 道具
这是一种行业标准“方法”,允许您动态决定应该使用哪个 HTML 标签来呈现组件。很多 React Components 库都使用它,比如 Chakra UI 和 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 对“as”属性的支持
使用 React 提供的打字稿的 React.ElementType 类型,您将为您的 IDE 获得自动完成功能,如下所示
type SectionProps = {
as?: keyof JSX.IntrinsicElements,
children: React.ReactNode,
}
type SectionProps = {
as?: keyof HTMLElementTagNameMap,
children: React.ReactNode,
}
以上是React 组件中带有'as”属性的动态 HTML 标签的详细内容。更多信息请关注PHP中文网其他相关文章!