reactjs - ReactJS:在基于类的消费者组件中访问 this.context 时出现问题
问题描述
我在基于类的消费者组件中访问 this.context 时遇到问题。我有以下情况:
AppContext.js:
import React from "react";
const ContactContext = React.createContext(); // Create our context
export default ContactContext;
数据提供者.js:
import React, { Fragment } from "react";
import AppContext from "./AppContext";
export default class DataProvider extends React.Component {
state = {
contacts: {
contact1: {
id: 1,
firstName: 'Test User FN',
lastName: 'Test User LN'
}
}
};
render() {
return (
<>
<AppContext.Provider value={{contacts: this.state.contacts}}>
{this.props.children}
</AppContext.Provider>
</>
);
}
}
应用程序.js:
import React from 'react';
import DataProvider from "./DataProvider";
import Contact from './components/contact/contact.component';
export default class App extends React.Component {
render() {
return (
<div>
<div className="container">
<DataProvider>
<Contact contactIndex={0}/>
</DataProvider>
</div>
</div>
);
}
}
消费者 Contact.js:
import React, { Component } from "react";
import AppContext from '../context/AppContext'
export default class Contact extends Component {
static contextType = AppContext;
componentDidMount () {
console.log('My context is: ' + this.context);
}
render() {
return (
<div className="card"></div>
);
}
}
控制台输出是: 我的上下文是:未定义
谢谢你的帮助
问候达基尔
解决方案
您的代码对我来说似乎是正确的,我试图在沙盒中复制它以找出错误,并且以某种方式像魅力一样工作。
https://codesandbox.io/s/interesting-https-emgoz?file=/src/App.js
试图发现差异,但我不能说实话。
推荐阅读
- c# - 如何在 NUnit 中模拟 StreamReader
- c# - 我正在使用 C# 将 XML 文件转换为 CSV。我尝试了不同的方法,但无法弄清楚如何访问键名/值对
- list - 带有日志插入和日志搜索的索引列表
- python - Python中的克拉克埃文斯聚合索引
- linux - 变量内的位置参数不可读 - bash脚本
- xcode - 如何更改 iOS 设备的 Safari 扩展程序的显示名称?
- flutter - 如何用颤振创造这种效果。我使用了 BackdropFilter 但我认为它不正确
- html - 不使用 CSS 扩展选择器
- java - 无法在 java 中使用 post 请求进行授权
- python - 如何从用户使用 tkinter 决定的日期开始每周安排一次任务?