无法在JSX中呈现布尔值?

anu*_*_io 37 javascript reactjs react-jsx

我试图在JSX中呈现布尔值,但是React正在将其作为表达式进行评估,并且在返回组件后不返回任何内容.

有什么解决方法吗?

这是一个例子

var ipsumText = true;

ReactDOM.render(
  <div>
     Boolean Value:    {ipsumText}
  </div>,
  document.getElementById('impl')
);
Run Code Online (Sandbox Code Playgroud)

只是将编译后的HTML显示为

<div data-reactid=".0"><span data-reactid=".0.0">Boolean Value:    </span></div>
Run Code Online (Sandbox Code Playgroud)

编辑:这是示例http://jsbin.com/nibihodoce/1/edit?html,js,output的JSBin链接

编辑2:我已经探索过.toString()替代方案,但是因为我正在迭代一个对象数组,并且该对象的特定字段可以具有字符串/整数/布尔类型的值.将.toString()应用于所有'em似乎不是最佳的.

gap*_*ton 76

 Boolean Value:    { ipsumText.toString() }
Run Code Online (Sandbox Code Playgroud)

UPD:或

 Boolean Value:    { String( ipsumText ) }
Run Code Online (Sandbox Code Playgroud)

要么

 Boolean Value:    { '' + ipsumText }
Run Code Online (Sandbox Code Playgroud)

要么

 {`Boolean Value: ${ipsumText}`}
Run Code Online (Sandbox Code Playgroud)

要么

 Boolean Value:    { JSON.stringify( ipsumText ) }
Run Code Online (Sandbox Code Playgroud)

我更喜欢第二种选择.通用,快速,适用于所有原始类型: Boolean( smth ),Number( smth ).

  • 为什么我们需要进行类型转换?为什么不能直接布尔显示? (3认同)
  • React 不允许将对象作为值,但 [Vue](https://stackblitz.com/edit/vue-ovzhdn) 确实显示除未定义和 null 之外的实际值。我相信它在底层使用了“toString”,但为什么反应不会这样做呢? (2认同)