Если у меня в Comp1.js
const Comp1 = () => {
const globalTheme = new createContext()
return (
<globalTheme.Provider globalStyle={anyVar}>
<Layout>
<AnotherComponent />
</Layout>
</globalTheme.Provider>
)
}
А затем в layout.js
const globalStyle = useContext(globalTheme)
console.log(globalStyle)
я получаю globalTheme is not defined
, должен ли я снова создать контекст?
const globalTheme = new createContext()
const globalStyle = useContext(globalTheme)
console.log(globalStyle)
Тогда я получаю undefined
для globalStyle
что мне не хватает?
РЕДАКТИРОВАТЬ: на основе комментариев я использую третий файл и импортируюконтекст для получения доступа к нему -> theme-context.js
import { createContext } from 'react'
export const themes = {
light: {
foreground: '#000000',
background: '#eeeeee',
},
dark: {
foreground: '#ffffff',
background: '#222222',
},
}
export const ThemeContext = createContext(
themes.dark // default value
)
Затем я предоставляю этот контекст в другом файле blog-template.js
import { ThemeContext } from '../context/theme-context'
import Layout from '../components/layout'
const Blog = () => {
let globalStyle = 'just any value'
return (
<ThemeContext.Provider globalStyle={globalStyle}>
<Layout />
</ThemeContext.Provider>
)}
А затем в layout.js
import React, { useContext} from 'react'
import { ThemeContext } from '../context/theme-context'
const Layout = () => {
const globalStyle = useContext(ThemeContext)
console.log(globalStyle)
}
Но globalStyle
не определено, почему это так?
РЕДАКТИРОВАТЬ: ошибка не состояла в том, чтобы предоставить значение как prop
-<ThemeContext.Provider globalStyle={globalStyle}>
+-<ThemeContext.Provider value={globalStyle}>