javascript - ReactJS:从基础组件访问上下文

标签 javascript class reactjs

我正在尝试创建一个可以处理 UI 主题的基本组件。主题通过上下文传递给组件,但我创建的基本组件没有接收上下文。

class DetailView extends ThemedComponent {
  constructor(props) {
    super(props);
  }

  render() {
    return <div>Detail View</div>;
  }
}

export default DetailView;

class ThemedComponent extends Component {
  constructor(props, context) {
    super(props);
    // context here is undefined
  }
}

ThemedComponent.contextTypes = {
  theme: PropTypes.object,
};

export default ThemedComponent;

如果 DetailView 直接扩展 Component 并且一切正常,我可以从 DetailView 获取上下文。但是,当我尝试获取 ThemedComponent 中的上下文时,它始终是未定义的。

创建可以使用组件上下文执行操作的通用基础组件的正确方法是什么?

最佳答案

您必须将上下文传递给 DetailView 中的 super:

class DetailView extends ThemedComponent {
     constructor(props, context) {
          super(props, context);
     }
     .........
}

关于javascript - ReactJS:从基础组件访问上下文,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33637914/

相关文章:

java - 在类中定义数组时出错

javascript - 检查状态是真还是假 react

reactjs - 如何在 React 中调整图像大小

javascript - Meteor.subscribe 之后有多少数据加载到客户端?

javascript - Meteor - 如何使单击的表格行保持突出显示的颜色

javascript - Jquery 复选框更改功能在 IE 8 中不起作用

java - 为什么当我收到 ActionMessage 时,我的表中的值会被删除?

javascript - 使用字符串变量访问nodejs静态方法

php - 在 PHP 中堆叠静态类

javascript - 服务器端渲染中未定义 React Context