Syntax highlighter in React
Since I document my journey of learning new skills, with a great focus on a web development, I often need to include code snippets in my posts.
By default, a visual presentation of a code section is not very appealing. To improve the user experience of these sections, I decided to use a code highlighter.
Below you can find instructions of enabling syntax highlighting in React.
Install react-syntax-highlighter
To allow for code highlighting, use a special syntax highlighting component for React from react-syntax-highlighter package.
To install the package, run the following command in the terminal in the root of your project:
npm install react-syntax-highlighter --saveThis command will add react-syntax-highlighter to your package.json.
Create Code component
This React component is designed to hold the styles and other properties related to a code section, including react-syntax-highlighter.
Create Code.js file in your components folder, and add the following code to it:
// components/Code.js
import { Prism as SyntaxHighlighter } from 'react-syntax-highlighter';
import { dracula } from 'react-syntax-highlighter/dist/cjs/styles/prism';
const Code = ({ language, children }) => (
<SyntaxHighlighter language={ language } style={ dracula }>
{ children }
</SyntaxHighlighter>
);
export default Code;The component uses Prism, included in react-syntax-highlighter, to style code syntax.
The code output (children), added to this component, will be automatically styled based on a set style. In this specific case, the component uses dracula style, from a list of availible Prism styles, to provide a code highlighting.
Not to mention, the component allows to set language to highlight code in. Here is a list of available languages for Prism in react-syntax-highlighter.
Use Code component
In order to highlight a code on a page, make sure to tell the page to use the Code component.
To do so, import the Code component to a page by adding this code at the top of the page file:
import Code from '../components/Code';Then, wrap your code output within the Code component:
<Code language="javascript">
Your code output goes here.
</Code>In this specific case, the Code component uses javascript as the language to highlight code in.