How to get the data from React Context Consumer outside the render

后端 未结 5 543
情深已故
情深已故 2020-12-15 18:03

I am using the new React Context API and I need to get the Consumer data from the Context.Consumer variable and not using it inside the render method. Is there anyway that I

5条回答
  •  心在旅途
    2020-12-15 18:34

    Update

    As of React v16.6.0, you can use the context API like:

    class App extends React.Component {
        componentDidMount() {
           console.log(this.context);
        }
        render() {
           // render part here
           // use context with this.context
        }
    }
    App.contextType = CustomContext
    

    However, the component can only access a single context. In order to use multiple context values, use the render prop pattern. More about Class.contextType.

    If you are using the experimental public class fields syntax, you can use a static class field to initialize your contextType:

    class MyClass extends React.Component {
      static contextType = MyContext;
      render() {
        let value = this.context;
        /* render something based on the value */
      }
    }
    

    Render Prop Pattern

    When what I understand from the question, to use context inside your component but outside of the render, create a HOC to wrap the component:

    const WithContext = (Component) => {
      return (props) => (
          
               {value =>  }
          
      )
    }
    

    and then use it:

    class App extends React.Component {
        componentDidMount() {
           console.log(this.props.value);
        }
        render() {
           // render part here
        }
    }
    export default WithContext(App);
    

提交回复
热议问题