I use `ReactDOM.unstable_renderSubtreeIntoContainer` to render a portal.

``` javascript
class Modal extends React.Component {

componentDidMount() {
    this.node = document.createElement('div');
    document.body.appendChild(this.node);
    this.renderPortal(this.props);
}

componentWillReceiveProps(nextProps) {
    this.renderPortal(nextProps);
}

componentWillUnmount() {
    ReactDOM.unmountComponentAtNode(this.node);
    document.body.removeChild(this.node);
}

renderPortal = (props) => {
    renderSubtreeIntoContainer(this, <ModalPortal {...props} />, this.node);
}

render() {
    return null;
  }
}
```

In my root component:

``` javascript
class App extends React.Component {
    static childContextTypes = {
        highlightColor: React.PropTypes.object
    }

    getChildContext() {
        return {
            highlightColor: this.props.highlightColor
        }
    }

    ...
}
```

The context of root component will be updated and passed to children if  `this.props.highlightColor` is changed. This is right.
I can access the correct context in the `<ModalPortal/>` component in the first render.
And after that the context passed to  `<ModalPortal/>` **does not change any more** when the context of root component changed.
But I can access the correct context in the `<Modal/>`  every render.

what's wrong with my code ?

* @param {?function} callback function triggered on completion
   * @return {ReactComponent} Component instance rendered in `container`.
   */
  render: function(nextElement, container, callback) {
    return ReactMount._renderSubtreeIntoContainer(null, nextElement, container, callback);
  },
  /**
   * Unmounts and destroys the React component rendered in the `container`.
   * See https://facebook.github.io/react/docs/top-level-api.html#reactdom.unmountcomponentatnode
   *
   * @param {DOMElement} container DOM element containing a React component.
   * @return {boolean} True if a component was found in and unmounted from
   *                   `container`
   */
  unmountComponentAtNode: function(container) {
    
    
    
    
    warning(
      ReactCurrentOwner.current == null,
      'unmountComponentAtNode(): Render methods should be a pure function ' +
      'of props and state; triggering nested component updates from render ' +
      'is not allowed. If necessary, trigger nested updates in ' +
      'componentDidUpdate. Check the render method of %s.',
      ReactCurrentOwner.current && ReactCurrentOwner.current.getName() ||
        'ReactCompositeComponent'
    );
    invariant(
      container && (