如何在旧的反应组件中使用上下文?

Posted

技术标签:

【中文标题】如何在旧的反应组件中使用上下文?【英文标题】:how to useContext in old react component? 【发布时间】:2021-01-22 12:28:13 【问题描述】:

它在打印时显示一个空的

import  UserContext  from "../../firebase/user";

export class CreateProduct extends Component 
    static context = UserContext;
    render() 
        console.log(this.context)
    

【问题讨论】:

这能回答你的问题吗? React - useContext inside class OP 试图在一个类中使用 Context,而不是使用钩子 useContext。 【参考方案1】:

您需要将 static context 重命名为 static contextType。请参考docs:

可以为类的 contextType 属性分配一个由 React.createContext() 创建的 Context 对象。这使您可以使用 this.context 使用该上下文类型的最接近的当前值。您可以在包括渲染函数在内的任何生命周期方法中引用它。

【讨论】:

【参考方案2】:

可以为类的 contextType 属性分配一个由 React.createContext() 创建的 Context 对象。这使您可以使用 this.context 使用该上下文类型的最接近的当前值。您可以在包括渲染函数在内的任何生命周期方法中引用它。

import  UserContext  from "../../firebase/user";

export class CreateProduct extends Component 
    static contextType = UserContext;
    render() 
        console.log(this.context)
    

【讨论】:

您能补充说明吗? @CristianTraìna 我已经添加了。

以上是关于如何在旧的反应组件中使用上下文?的主要内容,如果未能解决你的问题,请参考以下文章

如何在上下文提供程序中使用 axios get 调用来做出反应

如何在本机反应中模拟上下文消费者反应元素

如何从另一个组件 React 更改反应上下文的值

如何更新组件之间的反应上下文?

如何通过反应上下文保持价值?

如何为特定页面创建父组件(以便能够在父级中添加反应上下文)?