Это все о наличии текстовых строк перевода и их реализации в JSX.
Допустим, у меня есть две строки. Один для английского и другой для испанского, как это:
английский
const phrase = `this is just a string with some [replace]weird[/replace] link inside`
Испанский
const phrase = `esto es solo un string con un [replace]raro[/replace] enlace dentro`
Когда я нахожусь в режиме английского языка, строка, конечно, будет первым примером.
Я пытаюсь заменить слово [replace] внутри [/ replace] на такой компонент.
<p dangerouslySetInnerHTML={{
__html: phrase.replace(/\[replace\](.*)\[\/replace\]/, <Link to={linkurl} >test</Link>)
}}>
Вывод: это просто строка с некоторой ссылкой [object Object] внутри
Этот работает нормально, используя только обычные HTML-теги
<p dangerouslySetInnerHTML={{
__html: phrase.replace(/\[replace\](.*)\[\/replace\]/, "<b>$1</b")
}}>
</p>
вывод: это просто строка с какой-то странной ссылкой внутри
Я также попробовал следующее:
<p dangerouslySetInnerHTML={{
__html: phrase.replace(/\[replace\](.*)\[\/replace\]/, "<Link to=\""+linkurl+"\">$1</Link>")
}}>
</p>
вывод: this is just a string with some weird link inside
но слово "странный" должно быть элементом ссылки, а это не ...
Кстати, компонент является просто компонентом от gatsby, он позволяет вам перемещаться с маршрутизацией (в настоящее время используется роутер).