能否将字符串中的子字符串更改为不同的HTML标签或属性?
P粉852114752
P粉852114752 2023-09-13 16:34:08
[HTML讨论组]

有一个接受字符串作为属性的React组件:

interface MyProps {
  myInput: string;
}

export function MyComponent({ myInput }: MyProps) {
   ...
   return (
     <div>
       {myInput}
     </div>
   );
};

这个组件在其他地方被使用:

<MyComponent myInput="请通过test@test.com与我们联系" />

我的问题是,我们能在这种情况下改变电子邮件地址的颜色吗?例如改为蓝色。

或者更好的是,将该文本包装在:

<a href="mailto:test@test.com" target="_blank">
   test@test.com
</a>

不确定如果属性的类型是string是否可以做到这样的事情。

P粉852114752
P粉852114752

全部回复(1)
P粉848442185

你可以根据提供的字符串来完成,但是如果将电子邮件地址作为MyComponent的一个单独属性提供,会更容易。

在不改变组件的情况下,我会使用一些简单的正则表达式从字符串中获取电子邮件地址,然后你可以根据需要进行任何操作。

下面是一个简单且不完整的正则表达式示例:

const SUPER_SIMPLE_EMAIL_REGEX = /[a-z0-9.]{1,}@test.com/gi; // 不要使用这个

export function MyComponent({ myInput }: MyProps) {
   const match = myInput.match(SUPER_SIMPLE_EMAIL_REGEX);

  if (!match.length) {
    return (
      <div>
        {myInput}
      </div>
    );
  }

  const textWithoutEmail = myInput.replace(match[0], '');

  return (
    <div>
      <span>{textWithoutEmail}</span>
      <a href={`mailto:${match[0]}`} target="_blank">
        match[0]
      </a>
    </div>
  );

};

这是一个非常简化的解决方案,但我认为你可以在你的情况下使用它。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

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