styled-components ThemeProvider не работает в React Native = ›Веб-сборка Expo

Я работаю с небольшим выставочным проектом, где разрабатываю как для iOS / Android, так и для Интернета. Недавно я захотел добавить в проект стилизованные компоненты и все настроил и запустил для Интернета и мобильных устройств, пока я не начал работать с поставщиком тем и опорой темы. Я на 99% уверен, что должен был все сделать правильно, потому что он работает на мобильных устройствах, но в веб-версии я получаю исключение JS.

  • Я создал тип для темы и знаю, что он работает, потому что моя IDE сообщает мне, когда я пытаюсь добавить в тему что-то не так.
  • Я создал theme.ts и импортирую его в компонент, в котором реализовал ThemeProvider. Я знаю, что это работает, потому что при доступе к prop.theme я получаю автозаполнение, и, как я уже сказал, это работает на мобильных устройствах.
const Container = styled.View`
    background-color: ${props => props.theme.color.primary};
`

Я получаю следующее сообщение об ошибке: TypeError: не удается прочитать свойство «primary» из undefined

Я подозреваю, что это может быть связано с упаковщиком expo и отсутствующими загрузчиками или чем-то еще? Я не знаю. Насколько мне известно, я сделал все, как в документации, и подозреваю, что это проблема с Expo Web и ThemeProvider.

Вот соответствующие пакеты, которые я использую:

"expo": "~39.0.2"
"styled-components": "^5.2.1"
"@babel/core": "~7.9.0"

Я заблокирован этим, потому что мне нужно решить, продолжать ли стилизованные компоненты или без них.


person All Bits Equal    schedule 03.12.2020    source источник


Ответы (1)


Оказывается, когда вы импортируете ThemeProvider из styled-components, а затем работаете с styled-components / native, сборки iOS и Android по-прежнему работают, но Интернет ломается ...

Это была моя ошибка. Всегда используйте styled-components / native! Глупый я

person All Bits Equal    schedule 06.12.2020