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

标签 javascript reactjs

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

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>之间当组件渲染时,在粗体字符串中?

最佳答案

您可以使用dangerouslySetInnerHTML来实现您想要实现的目标。 Prop 。

看下面的代码:

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>

关于javascript - 将 React Element 的字符串值的一部分设为粗体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52030205/

相关文章:

javascript - 如何检查字符串是否与带星号的模式匹配

javascript - 使用 React.js 和 redux 从 <Field> onSubmit 获取值。

javascript - 有人可以解释为什么/如何不需要在 Action 创建者中为同步函数分派(dispatch) Action 吗?

javascript - 将父属性传递给子元素reactjs

javascript - 使用 dat.gui 隐藏 THREE.Mesh

javascript - 单击事件撤消

reactjs - 类内部的 getDefaultProps 方法与 class.DefaultProps 方法

reactjs - React Native Flatlist extraData 不工作 redux 数据已更改

javascript - 表单隐藏字段中的字符串替换 - JS

javascript - 拖动html元素时检测mouseenter事件