将 React Element 的字符串值的一部分设为粗体

IT技术 javascript reactjs
2021-05-07 12:13:33

我在我的文件中定义了变量:

var text = `The start of string ${<b>{this.state.isTrue ? 'Bolded' : 'Also Bolded'</b>} the end of string.`

这个字符串被传递给一个 React 元素:

<span>{text}</span>

我想要的文本BoldedAlso Bolded当组件呈现被加粗,但根据我试图通过串的路上,我要么得到[object Object],而不是或<b>Bolded</b>

我发现工作的唯一方法是:

var text = <React.Fragment>The start of string {<b>{this.state.isTrue ? 'Bolded' : 'Also Bolded'</b>} the end of string.</React.Fragment>

但这似乎相当冗长,有时字符串很简单,不包含任何占位符,因此使用 React 元素来包装它似乎没有必要。另外,我希望能够将值存储在数据库中,并且在检索时应该以一种方式插入该值,以显示标记为粗体的文本 - 粗体。

问题:<b></b>当组件被渲染时,有没有办法让字符串中的文本加粗?

1个回答

您可以使用dangerouslySetInnerHTMLprops实现您想要完成的任务

看看下面的代码:

function App(props) {
  const text = {
    __html: `The start of string <b>${
      props.isTrue ? "Bolded" : "Also Bolded"
    } </b> the end of string.`
  };

  return <span dangerouslySetInnerHTML={text} />;
}

const rootElement = document.getElementById("root");
ReactDOM.render(<App isTrue={true} />, rootElement);
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react-dom.min.js"></script>
<div id="root"></div>