Рубрики
Без рубрики

Рисунок реагирования: централизованные пропорты

Избегайте повторения себя централизирующимися проптипами Существует три популярных способа обработки типов в React: пропидп, типограф и поток. Этот пост о пропипсе, которые в настоящее время являются наиболее популярными. ? Для применения применения типов в реакции я обычно использую … # React RT высоко ценится – дом CORY (@HouseCor) 23 сентября 2017 года

Избегайте повторения себя централизирующими пропипс

Есть три популярных способа обработки типов в реакции: Пропорпы , TeampScript и Поток . Этот пост о пропипсе, которые в настоящее время являются наиболее популярными.

? Для действующих типов в реакции я обычно использую … # Дереат RT ценится

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

  • Компонент принимает объект? Объявить форму объекта.
  • PROP принимает только определенный список значений? Используйте однозначность.
  • Массив должен содержать цифры? Использовать arrayof.
  • Вы даже можете объявить свои собственные виды. Airbnb предлагает много дополнительных пропорций Отказ

Вот пример проптипа:

UserDetails.propTypes = {
 user: PropTypes.shape({
   id: PropTypes.number.isRequired,
   firstName: PropTypes.string.isRequired,
   lastName: PropTypes.string.isRequired,
   role: PropTypes.oneOf(['user','admin'])
};

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

Решение? Централизовать свои пропорты Отказ

Вот как централизовать пропорциональные

Я предпочитаю централизующиеся пропорциональные пропорции в/тыпс/index.js.

Я использую именованные импорт в строке 2, чтобы сократить декларации. ?

И вот как я использую проптип, который я заявил выше:

// types/index.js
import { shape, number, string, oneOf } from 'prop-types';

export const userType = shape({
  id: number,
  firstName: string.isRequired,
  lastName: string.isRequired,
  company: string,
  role: oneOf(['user', 'author']),
  address: shape({
    id: number.isRequired,
    street: string.isRequired,
    street2: string,
    city: string.isRequired,
    state: string.isRequired,
    postal: number.isRequired
  });
});

Я использую именованный импорт, чтобы получить ссылку на экспортируемую декларирую пропиртп в строке 2. И я положил его в использовании на линии 13.

Преимущества :

  1. Централизованный проптип радикально упрощает пропорциональную декларацию компонента. Линия 13 Просто ссылается на централизованный проптип, поэтому легко прочитать.
  2. Централизованный тип объявляет только форму, поэтому вы все равно можете пометить опоры по мере необходимости по мере необходимости.
  3. Нет больше копирования/вставки. Если форма объекта меняется позже, у вас есть одно место для обновления. ?

Вот a Рабочий пример на CodeSandbox Отказ

Дополнительный кредит: генерировать свои пропиты

Наконец, рассмотрите возможность написания какого-то пользовательского кода для создания своих объявлений пропорционалов от вашего сервера кода. Например, если ваша API написана с использованием сильно напечатанного языка, такого как C # или Java, рассмотрите генерацию пропорциональных объявлений как часть процесса сборки API на стороне сервера, чтение формы ваших классов на серверу. Таким образом, вам не нужно беспокоиться о том, чтобы сохранить свои клиентские опоры и ваш код API на стороне сервера в синхронизации. ?

Side-Note : Если вы знаете проект, который делает это для любых языков на стороне серверов, пожалуйста, ответьте в комментарии, и я добавлю ссылку здесь.

Редактировать : Вы можете конвертировать JSON в пропипп, используя transform.now.sh Отказ ?

Резюме

  1. Объявить свои пропорты как можно более четко, так Вы знаете, когда вы допустили ошибку.
  2. Централизовать свои пропорты, чтобы не повторять себя.
  3. Если вы работаете на сильном наведенном языке на сервере, рассмотрите возможность создания своих пропинцев, прочитав код сервера. Это гарантирует, что ваши пропорты соответствуют вашим типам Server-Side.

Ищете больше на реакции? ⚛️.

Я был авторизован несколько курсов React и JavaScript на плютаре ( бесплатная пробная версия ).

Дом Кори автор Несколько курсов по JavaScript, React, Clear Code, .NET и многое другое на Pluralsight Отказ Он главный консультант в rectegssconsulting.com , программный архитектор в VINSolutions, Microsoft MVP и поезда разработчиков программного обеспечения на международном уровне по методике программного обеспечения, такими как интерфейс разработки и чистого кодирования. CORY Tweets о JavaScript и Front-End Development в Twitter, как @houseCor Отказ

Оригинал: “https://www.freecodecamp.org/news/react-pattern-centralized-proptypes-f981ff672f3b/”