«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Лучшие советы по созданию пользовательских хуков в React

Лучшие советы по созданию пользовательских хуков в React

Опубликовано 7 ноября 2024 г.
Просматривать:215

Best Tips for Creating Custom Hooks in React

Пользовательские хуки React — это эффективный инструмент для удаления повторно используемой функциональности из ваших компонентов. Они поддерживают DRY (не повторяйте себя), удобство сопровождения и чистоту вашего кода. Но разработка полезных пользовательских перехватчиков требует четкого понимания фундаментальных идей и рекомендуемых процедур React. В этом посте мы обсудим некоторые из лучших стратегий разработки пользовательских хуков в React с примерами, объясняющими, как их эффективно применять.

1. Поймите назначение хуков

Прежде чем приступить к созданию собственных хуков, важно понять, что такое хуки и почему они существуют. Хуки позволяют использовать состояние и другие функции React в функциональных компонентах. Пользовательские перехватчики позволяют извлекать логику компонента в функции многократного использования, которые можно использовать совместно с несколькими компонентами.

Пример: базовый пользовательский хук

Вот простой пример пользовательского хука, который управляет счетчиком:

import { useState } from 'react';

function useCounter(initialValue = 0) {
  const [count, setCount] = useState(initialValue);

  const increment = () => setCount(prevCount => prevCount   1);
  const decrement = () => setCount(prevCount => prevCount - 1);
  const reset = () => setCount(initialValue);

  return { count, increment, decrement, reset };
}

// Usage in a component
// const { count, increment, decrement, reset } = useCounter(10);

2. Следуйте соглашениям об именах

В React существует соглашение, согласно которому пользовательские хуки должны начинаться со слова «использовать». Это не просто стилистический выбор — React полагается на это соглашение, чтобы автоматически применять правила хуков (например, не вызывать их условно).

Совет: всегда начинайте свои собственные хуки с use, чтобы React знал, что это крючок.

3. Держите хуки в чистоте

Пользовательские перехватчики должны быть чистыми функциями, то есть они не должны иметь побочных эффектов, таких как изменение глобальных переменных или непосредственное взаимодействие с внешними системами. Если необходимы побочные эффекты, например вызов API, их следует обрабатывать внутри хука, используя встроенные хуки React, такие как useEffect.

Пример: хук с побочными эффектами

import { useState, useEffect } from 'react';

function useFetchData(url) {
  const [data, setData] = useState(null);
  const [error, setError] = useState(null);
  const [loading, setLoading] = useState(true);

  useEffect(() => {
    const fetchData = async () => {
      try {
        const response = await fetch(url);
        const result = await response.json();
        setData(result);
      } catch (err) {
        setError(err);
      } finally {
        setLoading(false);
      }
    };

    fetchData();
  }, [url]);

  return { data, error, loading };
}

// Usage in a component
// const { data, error, loading } = useFetchData('https://api.example.com/data');

4. Используйте существующие крючки
При создании пользовательских перехватчиков обязательно используйте существующие перехватчики React, такие как useState, useEffect, useContext и другие. Это гарантирует, что ваш собственный хук можно компоновать и он может беспрепятственно работать со встроенными функциями React.

Пример: объединение хуков

Вот специальный хук, который сочетает в себе useState и useEffect для управления локальным хранилищем:

import { useState, useEffect } from 'react';

function useLocalStorage(key, initialValue) {
  const [storedValue, setStoredValue] = useState(() => {
    try {
      const item = window.localStorage.getItem(key);
      return item ? JSON.parse(item) : initialValue;
    } catch (error) {
      console.error(error);
      return initialValue;
    }
  });

  useEffect(() => {
    try {
      window.localStorage.setItem(key, JSON.stringify(storedValue));
    } catch (error) {
      console.error(error);
    }
  }, [key, storedValue]);

  return [storedValue, setStoredValue];
}

// Usage in a component
// const [name, setName] = useLocalStorage('name', 'John Doe');

5. Повторное использование и композиция

Одной из основных причин создания собственных хуков является обеспечение возможности повторного использования. Хороший пользовательский хук должен иметь возможность использоваться в нескольких компонентах без необходимости значительных модификаций. Кроме того, хуки можно объединять для создания более сложной логики.

Совет: сосредоточьтесь на извлечении логики, которая, скорее всего, будет повторно использоваться в нескольких компонентах.

6. Документируйте свои крючки

Как и любой фрагмент кода, ваши пользовательские хуки должны быть хорошо документированы. Включите комментарии, объясняющие, что делает перехватчик, какие параметры он принимает, что возвращает и какие побочные эффекты он может иметь. Это облегчит другим разработчикам (и вам в будущем) понимание и правильное использование ваших хуков.

Пример: документирование ловушки

/**
 * useCounter
 * 
 * A custom hook to manage a counter.
 *
 * @param {number} initialValue - Initial value of the counter.
 * @returns {object} { count, increment, decrement, reset } - Current count and functions to modify it.
 */
function useCounter(initialValue = 0) {
  // Implementation
}

7. Проверьте свои крючки

Тестирование необходимо, чтобы убедиться, что ваши пользовательские перехватчики ведут себя должным образом. Используйте библиотеки тестирования, такие как React-hooks-testing-library или Jest, чтобы писать модульные тесты для ваших хуков.

Пример: базовый тест на крючок

import { renderHook, act } from '@testing-library/react-hooks';
import useCounter from './useCounter';

test('should increment and decrement counter', () => {
  const { result } = renderHook(() => useCounter(0));

  act(() => {
    result.current.increment();
  });

  expect(result.current.count).toBe(1);

  act(() => {
    result.current.decrement();
  });

  expect(result.current.count).toBe(0);
});

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

Заявление о выпуске Эта статья воспроизведена по адресу: https://dev.to/wallacefreitas/best-tips-for-creating-custom-hooks-in-react-48ca?1 Если есть какие-либо нарушения, свяжитесь с [email protected], чтобы удалить это
Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3