Одной из ключевых особенностей блога по программированию являются блоки кода. Вам не нужно форматировать их с помощью подсветки синтаксиса, но если вы это сделаете, ваши блоги будут выглядеть намного лучше. Это также может улучшить читаемость вашего кода.
Эта статья покажет вам, как использовать react-syntax-highlighter для выделения блоков кода в React. Вы создадите компонент блока кода, способный подсвечивать переданный ему код, используя синтаксис предоставленного языка.
Подсветка синтаксиса с помощью react-syntax-highlighter
Подсветка синтаксиса реакции позволяет подсвечивать код с помощью React. в отличие от других подсветка синтаксиса, react-syntax-highlighter не полагается на ComponentDidUpdate или ComponentDidMount для вставки выделенного кода в DOM с использованием опасноSetInnerHTML.
Такой подход опасен, потому что он подвергает приложение атаки межсайтового скриптинга.
Вместо этого он использует синтаксическое дерево для построения виртуального DOM и обновляет его только с изменениями.
Компонент использует PrismJS и Highlight.js в фоновом режиме. Вы можете использовать любой из них, чтобы выделить свой код. Он очень прост в использовании, так как обеспечивает нестандартный стиль.
Компонент react-syntax-highlighter принимает код, язык и стиль в качестве реквизита. Компонент также поддерживает другие параметры настройки. Вы можете найти их в документация по подсветке синтаксиса реакции.
Использование компонента react-syntax-highlighter
Чтобы начать использовать подсветку синтаксиса реакции в React, установите ее через npm.
нпм установить реагировать-синтаксис-подсветка --спасти
Создайте новый компонент с именем CodeBlock.js в вашем приложении React и импортируйте реагировать-синтаксис-подсветка:
импорт Подсветка синтаксиса из 'подсветка синтаксиса реакции';
импорт { докко } из 'подсветка синтаксиса реакции/dist/esm/styles/hljs';
константа CodeBlock = ({кодовая строка}) => {
возвращаться (
<Язык подсветки синтаксиса="JavaScript" стиль = {docco}>
{кодовая строка}
</SyntaxHighlighter>
);
};
Компонент SyntaxHighlighter принимает используемый язык и стиль. Он также принимает строку кода в качестве своего содержимого.
Вы можете визуализировать вышеуказанный компонент следующим образом:
константа Приложение = () => {
константа строка кода = `
константа Квадрат = (n) => возвращаться п * п
`
возвращаться(
<Кодовая строка CodeBlock={codeString}/>
)
}
Важно отметить, что использование react-syntax-highlighter может увеличить размер вашей сборки, поэтому, если вам нужно, вы можете импортировать облегченную сборку. Однако легкая сборка не имеет стилей по умолчанию.
Вам также потребуется импортировать и зарегистрировать нужные языки с помощью регистрацияЯзык функция, экспортированная из легкой сборки.
импорт { Легкий в качестве Подсветка синтаксиса } из 'подсветка синтаксиса реакции';
импорт js из 'подсветка синтаксиса реакции/расстояние/ESM/языки/hljs/javascript';
SyntaxHighlighter.registerLanguage('JavaScript', js);
Этот компонент использует Highlight.js для выделения кода.
Чтобы вместо этого использовать PrismJS, импортируйте его из пакета react-syntax-highlighter следующим образом:
импорт { Призма в качестве Подсветка синтаксиса } из "реакция-синтаксис-подсветка";
импорт { vscDarkPlus } из "реакция-синтаксис-подсветка/расстояние/esm/стили/призма";
Для сборки prism light импортируйте PrismLight и зарегистрируйте язык, который вы используете.
импорт { Призмлайт в качестве Подсветка синтаксиса } из 'подсветка синтаксиса реакции';
импорт jsx из 'подсветка синтаксиса реакции/dist/esm/languages/prism/jsx';
импорт призма из 'подсветка синтаксиса реакции/расстояние/ESM/стили/призма/призма';
SyntaxHighlighter.registerLanguage('jsx', jsx);
Использование prism полезно, особенно при выделении jsx, потому что react-syntax-highlighter не поддерживает его полностью.
Добавление номеров строк в кодовый блок
Теперь, когда вы знаете, как выделить блок кода, вы можете начать добавлять дополнительные функции, такие как номера строк.
С реактивным синтаксическим маркером вам нужно только передать показатьLineNumbers к компоненту SyntaxHighlighter и установите для него значение true.
<Язык подсветки синтаксиса="JavaScript" style={docco} showLineNumbers="истинный">
{кодовая строка}
</SyntaxHighlighter>
Теперь компонент будет отображать номера строк рядом с вашим кодом.
Использование пользовательских стилей в вашем компоненте
Несмотря на то, что react-syntax-highlighter предоставляет стили, иногда вам может потребоваться настроить блоки кода.
Для этого пакет позволяет передавать inline CSS-стили в свойство customStyle, как показано ниже:
<Язык подсветки синтаксиса="JavaScript" style={vscDarkPlus} customStyle={{borderRadius: "5 пикселей", фоновый цвет: "#001E3C"}} >
{кодовая строка}
</SyntaxHighlighter>
В этом примере выделенный блок кода будет иметь настраиваемый радиус границы и цвет фона.
Важность подсветки синтаксиса
Вы можете использовать пакет react-syntax-highlighter для выделения кода в React. Вы можете использовать облегченную версию, чтобы уменьшить размер сборки и настроить блоки кода, используя собственные стили.
Выделение фрагментов кода улучшает внешний вид кода, улучшает его читабельность и делает его более доступным для читателей.