Is it possible to pass context into a component instantiated with ReactDOM.render?

后端 未结 2 876
北恋
北恋 2020-12-06 02:46

TL;DR Given the following example code:

ReactDOM.render(, someDomNode);

Is it possible to manually pas

2条回答
  •  萌比男神i
    2020-12-06 02:47

    No. Before react 0.14 there was method React.withContext, but it was removed.

    However you can do it by creating HoC component with context, it would be something like:

    import React from 'react';
    
    function createContextProvider(context){
      class ContextProvider extends React.Component {
        getChildContext() {
          return context;
        }
    
        render() {
          return this.props.children;
        }
      }
    
      ContextProvider.childContextTypes = {};
      Object.keys(context).forEach(key => {
        ContextProvider.childContextTypes[key] = React.PropTypes.any.isRequired; 
      });
    
      return ContextProvider;
    }
    

    And use it as following:

    const ContextProvider = createContextProvider(context);
    
    ReactDOM.render(
      
        
      ,
      someDomNode
    );
    

提交回复
热议问题