为什么 React 渲染的 DOM 节点不被 React.PropTypes.node 验证视为节点?

Why isn't a DOM node rendered by React considered a node by React.PropTypes.node validation?

假设我有两个组件:

叠加触发器:

import {openOverlay} from './overlay-actions'

class OverlayTrigger extends Component {
    handleMouseOver(event) {
        // updates global store
        openOverlay({
            triggerNode: this.refs.container
        })
    }

    render() {
        return <div ref="container" onMouseOver={this.handleMouseOver.bind(this)}></div>;
    }
}

// ...map actions to dispatch here

export default OverlayTrigger;

覆盖容器组件从父组件获取其属性,父组件监视全局存储以获取活动覆盖定义,它具有 triggerNode 属性。

class OverlayContainer extends Component {
    render() {
        return <div></div>;
    }
}

OverlayContainer.propTypes = {
    triggerNode: PropTypes.node
}

export default OverlayContainer;

此处的结果是传递给 OverlayContainer 的 triggerNode 是一个有效的 DOM 节点,但未通过 ReactPropTypes 的 isNode 验证器的验证。为什么?如何解决?

使用

triggerNode: React.PropTypes.instanceOf(Element)

验证 DOM 个元素。