如何从Reactjs中的类组件导出上下文?

时间:2019-11-26 10:44:02

标签: javascript reactjs

我在从组件导出上下文时遇到问题。 包含上下文的组件如下。

import React, { Component, createContext} from 'react';


export const MyContext = React.createContext('');

export default class ComponentOne extends Component {
   ....
   ....
   render(){
     return(
     <MyContext.Provider value={'value1'}>
      <div>....</div>
     </MyContext.Provider>
     )
   }

}


下面要导入上下文的组件

import React, { Component}  from 'react'
import { MyContext } from "../ComponentOne/Index.js"

export default class ComponentTwo extends Component{
render(){
  console.log(this.props)
  return(
    <MyContext.Consumer>
    </MyContext.Consumer>
  )
}
}

我遇到的错误是

TypeError: render is not a function

2 个答案:

答案 0 :(得分:1)

上下文提供者需要一个孩子。

Simulation Setup

答案 1 :(得分:0)

MyContext.Provider个孩子可以使用上下文。

在您的情况下,您需要在提供者内渲染ComponentTwo,作为使用者,请阅读提供的value

import React from 'react';
import ReactDOM from 'react-dom';

export const MyContext = React.createContext('');

class ComponentTwo extends React.Component {
  render() {
    return (
      <MyContext.Consumer>{value => <div>{value}</div>}</MyContext.Consumer>
    );
  }
}

class ComponentOne extends React.Component {
  render() {
    return (
      <MyContext.Provider value={'value1'}>
        <ComponentTwo />
      </MyContext.Provider>
    );
  }
}

ReactDOM.render(<ComponentOne />, document.getElementById('root'));

该错误可能是由于未读取Context.Consumer内部的值。

参考:Context API

Edit react-antd-styled-template