使用ES6模板链接的文本

时间:2017-07-17 05:55:44

标签: javascript reactjs ecmascript-6 jsx

我想表明“我阅读并同意隐私政策。隐私政策。”文本和“隐私政策”部分必须是一个链接。

我在下面尝试但是输出是“我读并同意[对象对象]。”

const privacyLink = <a href="">Privacy Policy</a>;
{`I read and agree to the ${privacyLink}`}

如何使用字符串模板执行此操作?

2 个答案:

答案 0 :(得分:4)

privacyLink缺少引号。模板文字语法不正确。将privacyLink定义为字符串,定义包含privacyLink的单独模板文字。

&#13;
&#13;
const privacyLink = "<a href=>Privacy Policy</a>";
const template = `I read and agree to the ${privacyLink}`;

document.body.innerHTML += template;
&#13;
&#13;
&#13;

或只是将privacyLink定义为字符串并使用+=运算符和.innerHTML设置.innerHTML

中元素的document

&#13;
&#13;
const privacyLink = "I read and agree to the <a href=>Privacy Policy</a>";

document.body.innerHTML += privacyLink;
&#13;
&#13;
&#13;

答案 1 :(得分:3)

您的问题是缺少JSX标记,但您显然正在使用JSX语法,因此我将基于该解释来回答它。

当你编写JSX时,你实际上是在告诉你的转换器创建一个函数,例如如果你在反应中使用JSX,那么

<a href="">Privacy Policy</a>

React.createElement('a', { href: '' }, 'Privacy Policy');

createElement返回对象,这是你的字符串模板中显示的内容。

您可以使用字符串模板构建字符串,因此${}中包含的任何内容都必须是字符串,否则它将被转换为字符串。

您应该继续使用JSX语法来编写您想要包含另一个JSX元素的任何内容。这可能有点棘手,因为任何元素树都需要有一个根元素。通常,您使用<span>非常安全,因此在这种情况下:

<span>I read and agree to the {privacyLink}</span>