О пакете 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 '@material-ui/lab/themeAugmentation';
const theme = createTheme({
components: {
MuiTimeline: {
styleOverrides: {
root: {
backgroundColor: 'red',
},
},
},
},
});