Создание повторно используемого компонента боковой панели с помощью React, TypeScript, Tailwind CSS и Headless UI

Вот статья в блоге, в которой объясняется, как создать повторно используемый компонент React TypeScript для боковой панели с помощью Tailwind CSS и Headless UI.

Привет! Сегодня мы углубимся в создание многократно используемого компонента боковой панели с использованием React, TypeScript, Tailwind CSS и Headless UI. Боковые панели — это распространенный элемент пользовательского интерфейса в веб-приложениях, и наличие компонента многократного использования может сэкономить нам время и усилия в будущих проектах. Итак, начнём!

Во-первых, убедитесь, что в вашем проекте настроены React, TypeScript и Tailwind CSS. Если вы используете приложение Create React, вы можете создать новый проект с поддержкой TypeScript, выполнив следующую команду:

npx create-react-app my-app --template typescript

Далее установим необходимые зависимости. Откройте каталог проекта в терминале и выполните следующую команду:

npm install @headlessui/react

Теперь давайте создадим файл компонента боковой панели Sidebar.tsx и начнем создавать многоразовую боковую панель.

import React from 'react';
import { Transition } from '@headlessui/react';
type SidebarProps = {
  isOpen: boolean;
  onClose: () => void;
};
const Sidebar: React.FC<SidebarProps> = ({ isOpen, onClose }) => {
  return (
    <Transition
      show={isOpen}
      enter="transition-opacity duration-300"
      enterFrom="opacity-0"
      enterTo="opacity-100"
      leave="transition-opacity duration-300"
      leaveFrom="opacity-100"
      leaveTo="opacity-0"
    >
      <div className="fixed inset-0 flex items-center justify-center z-50 bg-gray-900 bg-opacity-50">
        <div className="w-64 bg-white rounded-lg shadow-xl">
          {/* Sidebar content goes here */}
          <button className="absolute top-2 right-2" onClick={onClose}>
            <svg
              xmlns="http://www.w3.org/2000/svg"
              className="h-6 w-6 text-gray-600 hover:text-gray-800"
              fill="none"
              viewBox="0 0 24 24"
              stroke="currentColor"
            >
              <path
                strokeLinecap="round"
                strokeLinejoin="round"
                strokeWidth={2}
                d="M6 18L18 6M6 6l12 12"
              />
            </svg>
          </button>
        </div>
      </div>
    </Transition>
  );
};
export default Sidebar;

В приведенном выше коде мы определяем компонент Sidebar, который принимает два реквизита: isOpenи onClose. Свойство isOpenопределяет, видна ли боковая панель или нет, а свойство onClose — это функция обратного вызова для закрытия боковой панели.

Мы используем компонент Transitionиз Headless UI, чтобы добавить плавную анимацию открытия и закрытия нашей боковой панели. Содержимое боковой панели можно добавить внутри элемента <div className="w-64 bg-white rounded-lg shadow-xl">. В этом примере мы также включаем кнопку закрытия, которая запускает обратный вызов onCloseпри нажатии.

Чтобы использовать компонент «Боковая панель» в своем приложении, просто импортируйте его и при необходимости включите в иерархию компонентов:

import React, { useState } from 'react';
import Sidebar from './Sidebar';
const App: React.FC = () => {
  const [isSidebarOpen, setSidebarOpen] = useState(false);
  const toggleSidebar = () => {
    setSidebarOpen(!isSidebarOpen);
  };
  return (
    <div>
      <button onClick={toggleSidebar}>Toggle Sidebar</button>
      <Sidebar isOpen={isSidebarOpen} onClose={toggleSidebar} />
      {/* Other content of your application */}
    </div>
  );
};
export default App;

В приведенном выше коде мы используем хук useStateдля управления состоянием isSidebarOpen. Функция toggleSidebarобновляет состояние при нажатии кнопки переключения. Затем компонент боковой панели отображается с помощью свойства isOpen, для которого установлено значение состояния, и свойства onClose, для которого установлено значение функции переключения.

И все! Теперь у вас есть повторно используемый компонент боковой панели, созданный с помощью React, TypeScript, Tailwind CSS и Headless UI. Не стесняйтесь настраивать компонент и добавлять дополнительные функции в соответствии с требованиями вашего проекта.

Надеюсь, эта статья поможет вам в создании многократно используемых компонентов боковой панели для ваших проектов React. Приятного кодирования!

В этой статье мы узнали, как создать повторно используемый компонент боковой панели с помощью React, TypeScript, Tailwind CSS и Headless UI. Следуя инструкциям, описанным в этой статье, вы сможете легко создать и интегрировать компонент боковой панели в свои проекты. Это сэкономит вам время и силы при решении будущих задач разработки. Не забудьте настроить компонент в соответствии с требованиями вашего конкретного проекта. Приятного кодирования!