Импортируйте html-строку из другого файла в react. Использование prismjs для отображения подсветки кода

#javascript #html #reactjs #prismjs

#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:

В вашем коде есть две проблемы:

Синтаксис JSX

Вместо объявления вашего шаблона в виде строки, вы должны сделать это в «react way»

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

Экспорт отсутствует

Если вы хотите экспортировать свой шаблон из своего htmlSnippet.jsx , вам следует использовать export , а не return .

 export { html };
  

Комментарии:

1. У меня возникают проблемы при попытке отобразить {html}. Он возвращается как [object объект]