在props.children中逃脱卷曲括号

时间:2015-09-02 21:49:28

标签: javascript reactjs react-jsx

我正在尝试使用以下JSX代码段传递Handlebars模板以作为this.props.children进行处理:

<MyComponent>
  My address is {{address}}.
</MyComponent>

结果为Uncaught ReferenceError: address is not defined

解决方法是使用类似的东西:

<MyComponent>
  <span content="My address is {{address}}."></span>
</MyComponent>

然后使用this.props.children.props.content。这是我发现基本上逃避{{address}}被JSX解释为插值的唯一方法。

有没有一种直接的方法来逃避JSX中的花括号?

5 个答案:

答案 0 :(得分:16)

尝试将组件内容包装成花括号:

<MyComponent>
  {"My address is {{address}}."}
</MyComponent>

大括号中的所有内容都是表达式,不会被解析为JSX。至少,它适用于Babel REPL

答案 1 :(得分:5)

在ES6中引入了Template Literals,我们可以在这里使用它们,而不会引入太多花括号。

render() {
     let address = 'Somewhere on this earth!';
     return (
        <MyComponent>
            {`My address is ${address}`}
        </MyComponent>    
     );
}

链接到JSFiddle

希望这会有所帮助:)

答案 2 :(得分:2)

试试这个:

<MyComponent>
  {'My address is {{address}}.'}
</MyComponent>

答案 3 :(得分:1)

因为我还没有发表评论......;) 当然,你不必逃避整个文本 - 只是大括号。你在案件中做的事情是个人偏好。

<MyComponent>
 My address is {"{{"}address{"}}"}.
</MyComponent>

答案 4 :(得分:0)

我建议您使用新的JavaScript字符串文字。

这个:

{`{}`}

应该打印:

{}

因此,在您的情况下,请全部将其作为字符串

{`My address is {{address}}.`}

应打印:

My address is {{address}}.

和平! ✌️