为什么 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 个元素。
假设我有两个组件:
叠加触发器:
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 个元素。