Материальный компонент пользовательского интерфейса `theme.spacing` не определен после сборки

Я создаю текстовый редактор Material-UI, используя draft.js и оборачивая все функции в компоненты Material-UI.

Я освоился с ~3.9, но для этого проекта решил обновиться до 4.0. Может быть, я что-то упускаю, но у меня это обычно работает без проблем.

const styles = theme => ({
  paper: {
    paddingBottom: theme.spacing(2)
  },
  ...
})


import { withStyles } from "@material-ui/styles"
...
export class EditorComponent extends Component {
  ...
  render() {
    const { classes } = this.props
  }
}

export default withStyles(styles, { withTheme: true })(EditorComponent)

Это работает во время работы в webpack-dev-server, но когда я создаю javascript и пытаюсь импортировать его в другой проект и использовать его, я получаю эту ошибку в консоли...

Uncaught TypeError: theme.spacing is not a function

Кажется, я не могу найти ничего подходящего в этом вопросе.

Вот репо, если мой скрипт сборки поможет

https://github.com/jrdn91/material-ui-rte

Я предполагаю, что проблема в проекте, в который вы это импортируете. Я подозреваю, что проект, в котором вы пытаетесь использовать это, использует версию 3.9 Material-UI.

Ryan Cogswell 17.06.2019 20:14

@RyanCogswell Нет, проект, в который я это втягиваю, также был обновлен до 4.0.

Jordan 17.06.2019 20:16

Есть ли репо, которым вы можете поделиться с проектом, в который вы втягиваете это, где вы получаете эту ошибку?

Ryan Cogswell 17.06.2019 20:23

@RyanCogswell Вытащил пример CRA со страницы примеров проектов пользовательского интерфейса материалов и развернул его, вытащив мой редактор из NPM, и я получаю те же ошибки github.com/jrdn91/material-ui-rte-cre-пример

Jordan 17.06.2019 20:41

Кажется проблематичным, что у вас есть material-ui в зависимостях обоих. Я полагаю, что в итоге вы получите две копии material-ui (что может привести к тому, что проблемы будут проявляться запутанным образом). В material-ui-rte вы должны иметь пакеты material-ui как зависимости вглядеться, чтобы проект, использующий их, полностью контролировал используемую версию material-ui.

Ryan Cogswell 17.06.2019 20:47

@RyanCogswell, это хороший звонок, я внесу это изменение. На самом деле я выяснил ответ на свой вопрос, который я изложу в ответе.

Jordan 17.06.2019 20:54
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
6
3 041
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Оказывается, вытягивание withStyles или makeStyles и т. д. из @material-ui/styles не включает тему по умолчанию. В @material-ui/core/styles включены их упакованные версии, которые включают тему по умолчанию.

Поэтому переход с import { withStyles } from "@material-ui/styles" на import { withStyles } from "@material-ui/core/styles" решит эту проблему.

Ссылка с этой страницы

https://material-ui.com/customization/default-theme/#material-ui-core-styles-vs-material-ui-styles

Другие вопросы по теме