首页 > web前端 > js教程 > 正文

React 组件中带有“as”属性的动态 HTML 标签

碧海醫心
发布: 2024-11-22 08:13:05
转载
393人浏览过

假设您正在使用 react 构建一个可重用的 <section> 组件。该部分组件呈现一个 html <div> 标记,因为您对其进行了硬编码。 但是,在某些情况下,您可能想使用其他标签,例如 <section> html 标签。

这是一个典型的场景,当您希望 html 更加语义化并且 seo 友好时。

解决方案是让消费者决定应该使用哪个 html 标签来呈现组件。

“as” 道具

这不是什么新鲜事。

这是一种行业标准“方法”,允许您动态决定应该使用哪个 html 标签来呈现组件。很多 react components 库都使用它,比如 chakra ui 和 material ui。

如果没有“as”属性,您需要为每个用例创建单独的组件,这是没有意义的。别这样做!

这就是你使用“as”属性的方式

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>
  );
};
登录后复制

这是组件定义

慧中标AI标书
慧中标AI标书

慧中标AI标书是一款AI智能辅助写标书工具。

慧中标AI标书 120
查看详情 慧中标AI标书
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 帮助我们处理 typescript 类型。

使用 react 提供的打字稿的 react.elementtype 类型,您将为您的 ide 获得自动完成功能,如下所示

React 组件中带有“as”属性的动态 HTML 标签

立即学习前端免费学习笔记(深入)”;

作为 react.elementtype 的替代品,您可以使用

type sectionprops = {
  as?: keyof jsx.intrinsicelements,
  children: react.reactnode,
}
登录后复制


type SectionProps = {
  as?: keyof HTMLElementTagNameMap,
  children: React.ReactNode,
}
登录后复制

以上就是React 组件中带有“as”属性的动态 HTML 标签的详细内容,更多请关注php中文网其它相关文章!

相关标签:
HTML速学教程(入门课程)
HTML速学教程(入门课程)

HTML怎么学习?HTML怎么入门?HTML在哪学?HTML怎么学才快?不用担心,这里为大家提供了HTML速学教程(入门课程),有需要的小伙伴保存下载就能学习啦!

下载
来源:dev.to网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号