【发布时间】:2021-05-05 14:36:40
【问题描述】:
在 App 组件内部,我有 Component1,它有一个嵌套组件。我使用React.createContext() 创建了一个 contextApi 以在嵌套组件中使用它。使用useContext() 钩子我试图从App.js 获取myname 值并将其用作样式,但它返回undefined.
应用组件
import logo from './logo.svg';
import './App.css';
import Component1 from '../src/Component1/Component1'
import React from 'react'
export const Theme = React.createContext();
function App() {
const myname = {
width:'100px',
height:'100px',
background:'red'
}
return (
<Theme.Provider value={{myname}}>
<Component1>
</Component1>
</Theme.Provider>
); }
export default App;
组件1
import NestedComponent from '../NestedComponent/NestedComponent'
function Component1 (){
return <NestedComponent></NestedComponent>
}
export default Component1
嵌套组件
import Theme from '../App'
import {useContext} from 'react'
export default function NestedComponent(){
const mystyle = useContext(Theme) //returns undefined
return <div style = {mystyle}> </div>
}
【问题讨论】:
-
您将 myname 包装在一个对象中,所以您的上下文是
{myname: {width: '100px'}}所以,就这样吧,const { myname } = useContext(Theme); -
它给出以下错误 TypeError: Cannot destruct property 'myname' of 'Object(...)(...)' as it is undefined.
标签: reactjs use-context