Как создать быстрый компонент React с ChartJS 2 и классными настройками (часть 1 из 2)

Пару недель назад я работал над проектом React в Thinkific, где нам нужно было реализовать библиотеку диаграмм, которая должна быть достаточно гибкой, чтобы иметь дело с настраиваемыми всплывающими подсказками и стильными полосами. Мы решили использовать ChartJS, и это побудило меня создать это быстрое руководство о том, как мы это сделали. 😄

Приступим к кодированию 🚀

ChartJS 2 для React

Мы выбрали ChartJS 2 в качестве библиотеки для диаграмм, так как это открытый исходный код (ура!), вокруг него потрясающее сообщество, а также он обладает широкими возможностями настройки.

Чтобы использовать его внутри компонента React, мы решили установить пакет react-chartjs-2, который является просто оболочкой React для библиотеки.

Вы можете установить его, запустив:

npm install react-chartjs-2 chart.js --save

Теперь мы готовы приступить к работе над нашим компонентом! ⭐️

С помощью пары строк кода у нас уже есть диаграмма с полосами 🎉. Мы можем немного увеличить его и сделать закругленные края верхней панели с помощью специального кода.

Прутки с закругленными краями

Это было немного сложно, поскольку ChartJS 2 не предлагает возможности установить радиус границы для каждой полосы, поэтому нам пришлось создать собственный код.

Код является переопределением функции рисования из класса Rectangle в ChartJS. Базовый код взят отсюда, и я адаптировал его, так как нам нужно было скруглить только верхние края, но нижний остался бы таким же.

Чтобы использовать этот пользовательский код в предыдущем компоненте, нам нужно импортировать его и передать cornerRadius как свойство option в BarChart.

Теперь вы должны увидеть верхние закругленные края на вашей диаграмме! 🎉

Чтобы добавить дополнительные настройки, вы можете взглянуть на доступные параметры для гистограммы в ChartJS 2 docs.

В следующей статье я покажу вам, как интегрировать классные пользовательские всплывающие подсказки с ChartJS 2, чтобы сделать вещи немного интереснее. Вы можете найти пример графика здесь: Github repo

Если вам понравилась эта статья, не забудьте значок 👏!