Перейти к контенту

🎉 Material UI v5 is out now! Check out the announcement blog post

О пакете lab

Этот пакет содержит инкубационные компоненты, которые еще не готовы к переходу в основной пакет.

Главное различие между пакетом lab и основным пакетом заключается в очерёдности выхода обновлений. Наличие отдельного пакета lab позволяет нам выпускать критические обновления по мере необходимости, в то время как основной пакет следует политике "семь раз отмерь...".

По мере использования и тестирования компонентов сторонними разработчиками, разработчики, поддерживающие пакет, узнают больше о недостатках компонентов: недостающих фичах, проблемах универсального доступа, багах, проблемах в дизайне API, и т.д. Чем старше компонент, и чем более интенсивно он используется, тем менее вероятно проявление новых проблем, требующих критических обновлений.

Готовность компонента к перемещению в основной пакет определяется следующими критериями:

  • Он должен использоваться. Команда Material-UI помимо прочих метрик использует Google Analytics, чтобы оценить использование каждого компонента. Если компонент пакета lab используется редко, это может говорить о том, что он не полностью работоспособен, либо об отсутствии спроса на этот компонент.
  • Он должен соответствовать качеству кода компонентов основного пакета. Он не обязан быть совершенным, чтобы стать частью основного пакета, но компонент должен быть достаточно надёжным, чтобы сторонние разработчики могли на него положиться.
    • Для каждого компонента требуется определение типов. Компоненты пакета lab на данный момент не обязаны быть типизированными, но это понадобится для перемещения компонента в основной пакет.
    • Требуется хорошее покрытие тестами. Некоторые компоненты пакета lab на данный момент не имеют всесторонних тестов.
  • Может ли он использоваться как рычаг, стимулирующий пользователей к обновлению до последней мажорной версии? Чем менее разрозненно коммьюнити, тем лучше.
  • Он должен иметь низкую вероятность критических изменений в обозримом будущем. К примеру, если ему не хватает новой фичи, которая скорее всего потребует критических изменений, предпочтительно будет отложить его добавление в основной пакет.

Инструкция по установке

Установите пакет в каталог проекта командой:

// npm
npm install @material-ui/lab

// yarn
yarn add @material-ui/lab

Пакет lab зависит напрямую от пакета основных компонентов. Если Material-UI ещё не использовался вашем проекте, вы можете установить его командой:

// with npm
npm install @material-ui/core

// with yarn
yarn add @material-ui/core

TypeScript

Чтобы получить возможность пользоваться переопределением CSS и изменением свойств по умолчанию, разработчикам, использующим TypeScript, нужно импортировать следующие типы. Чтобы расширить структуру темы по умолчанию для использования компонентов доступных в пакете lab, внутри используется аугментация модулей.

import type '@material-ui/lab/themeAugmentation';

const theme = createTheme({
  overrides: {
    MuiTimeline: {
      root: {
        backgroundColor: 'red',
      },
    },
  },
});