javascript - 将模板文字转换为字符串

标签 javascript reactjs ecmascript-6

我有一个 React 组件,它接收一个 prop codeBlock,然后将其存储在组件的状态中。

其结构如下:

codeBlock = {
  code: `<div></div>`,
  language: 'html'
}

我想将这个 codeBlock.code (模板文字字符串)转换为 html 元素,这样当我在渲染元素时添加/附加它时,我将得到 DOM 元素而不是文字字符串。

到目前为止我尝试过的事情,

componentDidMount()中,我尝试了两种不同的方法:-

  1. 使用 DOMParser:
componentDidMount() {
  const parser = new DOMParser();
  const output = parser.parseFromString(this.state.codeBlock.code, 'text/html');
  this.setState({
    output
  });
}

此方法不起作用并引发此错误: 对象作为 react 子项无效(发现:[object htmldocument])

  • 使用 String.raw:
  • componentDidMount() {
      this.setState({
        output: String.raw `${this.state.codeBlock.code}`
      });
    }
    

    此方法按原样打印模板字符串,并且不创建任何元素。

    截图: enter image description here

    在下面的代码部分中,它应该呈现为 html 元素而不是字符串。

    最佳答案

    您可以使用innerHTML

    HTML:

    <div id="elem"></div>
    

    JS:

    const codeBlock = {
      code: `<div class="container"></div>`,
      language: 'html'
    }
    
    const elem = document.getElementById("elem");
    elem.innerHTML = codeBlock.code;
    

    关于javascript - 将模板文字转换为字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64848019/

    相关文章:

    javascript - 需要帮助更改函数中 SVG 的颜色 - Skycons

    javascript - jQuery UI 可排序和容器缩放

    javascript - ES6 : Am I using Classes & Mixins Correctly in JavaScript?

    javascript - 为多个元素实现滚动进度条

    javascript - 从异步操作创建者返回有效负载 - React js

    javascript - 如何在 react 中显示图像文件夹中的每个图像

    javascript - axios get params 不继承create中的params

    javascript - 如何使用 ES6 语法访问导入属性

    javascript - 如何使用 Angular2 中的 FileSaver 库打破 Excel 中的单元格

    javascript - Uncaught ReferenceError : require is not defined React. js