代码之家  ›  专栏  ›  技术社区  ›  Ilya

如何用React Link组件替换字符串的某些部分

  •  0
  • Ilya  · 技术社区  · 6 年前

    我有一个这样的文本(随机文本):

    bla bla bla (name of link)[link] bla bla bla (name of link)[link]
    

    我需要把所有的 (name of link)[link] 具有 Link

    <Link to={link}>name of link</Link>
    

    我想看的是:

    bla bla bla <Link to='/testRoute'>Test name</Link> bla bla bla <Link to='/testRoute'>Test name</Link>
    

    (链接名称)[链接]

    如何用文本中的替换所有匹配项?

    任何帮助都将不胜感激。

    2 回复  |  直到 6 年前
        1
  •  1
  •   Igor Alemasow    6 年前

    试着分开 bla bla bla (name of link)[link] bla bla bla (name of link)[link] 字符串转换为子字符串数组,因此您将拥有以下数组:

    const arrayOfStrings = [
        'bla bla bla',
        '(name of link)[link]',
        'bla bla bla',
        '(name of link)[link]',
    ];
    

    然后你就可以用 .map() 要使用有效的React元素创建新数组,请执行以下操作:

        arrayOfStrings.map((str, i) => {
            const isLink = str === '(name of link)[link]';//of course you need to replace it with regex
    
            if (isLink) {
                const linkName = 'name of link';//replace it with regex, so you can get dynamic link name from str
                const link = 'link';//replace it with regex, so you can get dynamic link from str 
    
                return <Link key={i} to={link}>{linkName}</Link>;
            }
            else {
                return <span key={i}>{str}</span>;
            }
        });