React Native: передача контекста конструкторам провайдера - PullRequest
0 голосов
/ 12 февраля 2020

Я импортировал Ui-Kitten для моего собственного проекта. Я слежу за документами и замечаю, что у них есть функция для изменения темы. В моем приложении. js я также объявляю навигатор и поставщиков. Как я могу сделать значение theme в <ApplicationProvider theme={theme}> доступным для экрана / компонента в моем приложении?

App.js:
// ui-kitten
import { ApplicationProvider, IconRegistry } from '@ui-kitten/components';
import { mapping, light as lightTheme, dark as darkTheme } from '@eva-design/eva';
import { EvaIconsPack } from '@ui-kitten/eva-icons';
...
// our app export:
export default () => {
<Provider1>
  <Provider2, etc>
     <ApplicationProvider mapping={ mapping } theme={ darkTheme }>
       <IconRegistry icons={ EvaIconsPack }/>
       <App ref={ (navigator) => {
         setNavigator(navigator)
        } }/>
     </ApplicationProvider>
  </Provider2, etc>
</Provider1>

Я уже пытался создать ThemeContext:

export default () => {
const { setTheme } = useContext(ThemeContext);
<Provider1>
  <Provider2, etc>
     <ApplicationProvider mapping={ mapping } theme=setTheme>
       <IconRegistry icons={ EvaIconsPack }/>
       <App ref={ (navigator) => {
         setNavigator(navigator)
        } }/>
     </ApplicationProvider>
  </Provider2, etc>
</Provider1>

1 Ответ

1 голос
/ 13 февраля 2020

Это зависит от значения, которое вы передаете в ThemeContext.Provider. Следуя этому руководству, вы работаете со строками, которые представляют ключ темы, но вы также можете передать тему как объект и сделать что-то вроде этого: const { theme } = React.useContext(ThemeContext);

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...