Введение:

ReactJS с его компонентной архитектурой изменил способ создания пользовательских интерфейсов. Чтобы расширить возможности ваших проектов React, важно использовать огромный мир доступных библиотек. В этом подробном руководстве мы рассмотрим 20 основных библиотек React с примерами кода и подробными объяснениями, которые помогут ускорить ваш путь разработки.

1. React Router — упрощение навигации
React Router предлагает простой способ управления навигацией и маршрутизацией в ваших приложениях React:

import { BrowserRouter as Router, Route, Link } from 'react-router-dom';

function App() {
  return (
    <Router>
      <nav>
        <Link to="/">Home</Link>
        <Link to="/about">About</Link>
      </nav>
      <Route path="/" exact component={Home} />
      <Route path="/about" component={About} />
    </Router>
  );
}

2. Axios — простые HTTP-запросы
Axios упрощает HTTP-запросы, корректно управляя обещаниями и ошибками:

import axios from 'axios';

axios.get('/api/data')
  .then(response => {
    console.log(response.data);
  })
  .catch(error => {
    console.error(error);
  });

3. Redux – надежное управление состоянием
Redux помогает управлять сложными состояниями приложений между компонентами:

import { createStore } from 'redux';
import rootReducer from './reducers';

const store = createStore(rootReducer);

// Access state
const currentState = store.getState();

// Dispatch actions
store.dispatch({ type: 'INCREMENT' });

4. React Query — извлечение данных стало проще
React Query упрощает извлечение, кэширование и синхронизацию данных:

import { useQuery } from 'react-query';

function UserProfile() {
  const { data, isLoading, error } = useQuery('user', fetchUser);

  if (isLoading) return 'Loading...';
  if (error) return 'An error occurred: ' + error.message;

  return <div>{data.name}</div>;
}

5. Material-UI – элегантные компоненты пользовательского интерфейса
Material-UI предоставляет предварительно разработанные компоненты, соответствующие рекомендациям Material Design:

import { Button, TextField } from '@mui/material';

function LoginForm() {
  return (
    <form>
      <TextField label="Username" />
      <TextField type="password" label="Password" />
      <Button variant="contained" color="primary">Login</Button>
    </form>
  );
}

Продолжайте читать, чтобы узнать о других незаменимых библиотеках React для улучшения ваших навыков разработки:

6. Formik — обработка форм стала проще
Formik упрощает управление и проверку форм:

import { Formik, Form, Field, ErrorMessage } from 'formik';

function MyForm() {
  return (
    <Formik
      initialValues={{ name: '', email: '' }}
      onSubmit={handleSubmit}
    >
      <Form>
        <Field type="text" name="name" />
        <ErrorMessage name="name" component="div" />
        <Field type="email" name="email" />
        <ErrorMessage name="email" component="div" />
        <button type="submit">Submit</button>
      </Form>
    </Formik>
  );
}

7. React Query (мутации) — обновление данных
React Query предназначен не только для получения данных; он также обрабатывает мутации данных:

import { useMutation, useQueryClient } from 'react-query';

function DeleteUserButton({ userId }) {
  const queryClient = useQueryClient();
  const deleteUser = useMutation(deleteUserApi);

  const handleDelete = () => {
    deleteUser.mutate(userId, {
      onSuccess: () => {
        queryClient.invalidateQueries('users');
      },
    });
  };

  return (
    <button onClick={handleDelete}>Delete User</button>
  );
}

8. React-DnD — перетаскивание для React
React-DnD обеспечивает функцию перетаскивания для ваших компонентов:

import { useDrag, useDrop } from 'react-dnd';

function DraggableItem({ id, text }) {
  const [{ isDragging }, ref] = useDrag({
    type: 'ITEM',
    item: { id },
  });

  return (
    <div ref={ref} style={{ opacity: isDragging ? 0.5 : 1 }}>
      {text}
    </div>
  );
}

9. React Beautiful DND — Изменение порядка списков
React Beautiful DND упрощает создание сортируемых списков:

import { DragDropContext, Droppable, Draggable } from 'react-beautiful-dnd';

function ReorderList({ items }) {
  return (
    <DragDropContext onDragEnd={handleDragEnd}>
      <Droppable droppableId="items">
        {(provided) => (
          <ul {...provided.droppableProps} ref={provided.innerRef}>
            {items.map((item, index) => (
              <Draggable key={item.id} draggableId={item.id} index={index}>
                {(provided) => (
                  <li
                    ref={provided.innerRef}
                    {...provided.draggableProps}
                    {...provided.dragHandleProps}
                  >
                    {item.content}
                  </li>
                )}
              </Draggable>
            ))}
          </ul>
        )}
      </Droppable>
    </DragDropContext>
  );
}

10. React Helmet — SEO-оптимизация
React Helmet упрощает управление тегами заголовков для SEO:

import { Helmet } from 'react-helmet';

function MyComponent() {
  return (
    <>
      <Helmet>
        <title>Page Title</title>
        <meta name="description" content="Page description" />
      </Helmet>
      {/* Your content */}
    </>
  );
}

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