在不同的文件上导入html字符串进行反应。使用prismjs显示代码突出显示

时间:2019-03-26 21:37:02

标签: javascript html reactjs prismjs

使用Prismjs在设计系统中显示代码段。

我想将html代码示例分离到一个独立文件中,并将其导入到我的组件中。

代码示例组件:

CodeSampleContainer.jsx

import React, { Component } from 'react';
import Prism from "prismjs";
import './CodeSample.scss';
import '../Shared/prism.css';

// Import separate html file
import { html } './htmlSnippet.jsx';

class CodeSample extends Component {
  hasHtmlBlob() {
    return (
      <pre>
        <code className="language-html">
          {html} // Any html displayed here will be highlighted by prism
        </code>
      </pre>
      )
    }
  }

  render() {
    return (
      <div className="CodeSample"> 
        {this.hasHtmlBlob()}
      </div>
    )
  }
}

我要导出的HTML:

htmlSnippet.jsx

const html = `
  <div>
    <ul>
      <li>1</li>
      <li>2</li>
      <li>3</li>
    </ul>
  </div>`

return html;

1 个答案:

答案 0 :(得分:1)

您的代码中有两个问题:

JSX语法

您应该以“反应方式”代替模板,而不是将模板声明为字符串。

const html = (
    <div>
        <ul>
           <li>1</li>
           <li>2</li>
           <li>3</li>
        </ul>
    </div>
);

导出丢失

如果要从htmlSnippet.jsx导出模板,则应使用export,而不要使用return

export { html };