无法在 react.js 的模板字符串中呈现 html 标签

Posted

技术标签:

【中文标题】无法在 react.js 的模板字符串中呈现 html 标签【英文标题】:Can't render html tags in a template string in react.js 【发布时间】:2019-02-28 21:21:27 【问题描述】:

Google 了,但还是不知道如何在 React 的模板字符串中渲染 html 标签:

return (
  <p className="text-left m-3">
     this.state.movies ? `Showing <strong>`$this.state.movies.length</strong`> : 
                          `DB is empty`
     
  </p>
);

有什么优雅的“反应方式”来解决它吗?

【问题讨论】:

【参考方案1】:

您可以简单地使用span 来包装元素,而不是将它们作为字符串返回

return (
  <p className="text-left m-3">
     this.state.movies ? <span>Showing <strong>this.state.movies.length</strong></span> : 
                          <span>DB is empty</span>
     
  </p>
);

【讨论】:

【参考方案2】:

您在代码中做错的事情很少。 1. 模板字面量不能直接作为回报,需要在test $value里面加上模板字面量 2. 你这里有语法错误,即模板文字应该在结束标记元素之后结束 strong

 `Showing <strong>`$this.state.movies.length</strong`>

这样做

return (
  <p className="text-left m-3">
     this.state.movies ? <span>`Showing <strong>$this.state.movies.length</strong>`</span> : 
                          <span>`DB is empty`</span>
     
  </p>
);

将模板字面量分配给局部变量并在返回时调用它

render()
   const text = `Showing <strong>$this.state.movies.length</strong>`;
   const text1 = `DB is empty`;
   return (
     <p className="text-left m-3">
     this.state.movies ? <span>text</span> : <span>text1</span>
     </p>
   )

【讨论】:

【参考方案3】:

你可以像这样简单地使用:

return (
  <p className="text-left m-3">
     Showing 
   this.state.movies &&
    // I would also make sure its length
     this.state.movies.length > 0 &&
     // to make sure not to print 0
     <strong>this.state.movies.length</strong> 
     || 'DB is empty'
  </p>
);

【讨论】:

以上是关于无法在 react.js 的模板字符串中呈现 html 标签的主要内容,如果未能解决你的问题,请参考以下文章

如何在 React js 中将 HTML 模板呈现为来自 json 的响应

React js:在单页应用程序中呈现多个索引 html

无法将数据从子功能组件传递到反应父组件(React.js)[重复]

无法在 React.js 中接收来自 Firebase 的消息

REACT JS:映射要在 JSX 中呈现的对象数组

模板未在 Django 提供的 Vue 中呈现 [重复]