Reactjs 反应类型DOM元素?

Reactjs 反应类型DOM元素?,reactjs,react-proptypes,Reactjs,React Proptypes,如何将属性标记为必须是DOM元素 说明PropTypes.element实际上是一个React元素,那么DOM元素的等价物是什么?您可以检查传递的属性是否是元素的实例: 元素接口表示文档的对象。此接口描述所有类型元素的通用方法和属性。特定的行为在接口中描述,这些接口继承自元素,但添加了额外的功能。例如,HtmleElement接口是HTML元素的基本接口,而SVGElement接口是所有SVG元素的基础 class一些扩展React.Component{ render(){ 返回( 你好 );

如何将属性标记为必须是DOM元素


说明
PropTypes.element
实际上是一个React元素,那么DOM元素的等价物是什么?

您可以检查传递的属性是否是
元素的实例:

元素接口表示文档的对象。此接口描述所有类型元素的通用方法和属性。特定的行为在接口中描述,这些接口继承自元素,但添加了额外的功能。例如,HtmleElement接口是HTML元素的基本接口,而SVGElement接口是所有SVG元素的基础

class一些扩展React.Component{
render(){
返回(
你好
);
}
}
const validateDOMElem=(props、propName、componentName)=>{
if(props[propName]instanceof元素===false){
返回新错误(
“提供给”的“无效道具”`+propName+'`+
“`+componentName+`。验证失败。”
);
}
}
某些.propTypes={
htmlElem:validateDOMElem,
};
const para=document.getElementById('para');
ReactDOM.render(,document.getElementById('app'))


例如,使用列表组件:

MyList.propTypes = {
  children: PropTypes.instanceOf(<li></li>),
}
MyList.propTypes={
子项:PropTypes.instanceOf(
  • ), }
    对我有用

    PropTypes.instanceOf(Element)
    
    他为我工作。您还可以添加isRequired:

    PropTypes.instanceOf(Element).isRequired
    

    您是指DOM元素的类型吗?可以使用自定义的属性检查器对
    someNode.constructor.name
    @MatthewHerbst No,我指的是任何DOM元素检查特定类型
    div
    span
    input
    ,不管什么。
    React.PropTypes.node
    ?@vijayst,即使它们是用
    document.getElementById
    获取的,或者是用
    document.createElement
    创建的,而不是
    React.createElement(“input”)
    ?@elmeister
    节点
    太松散。它包括数字、字符串和数组。也可以不创建自定义验证器而使用
    PropTypes.instanceOf(元素)
    是否有nodejs等效项?您现在可以使用
    PropTypes.elementType
    ,如下所述:扩展此答案以包括如何使用div和导入组件之间的差异,这可能会给您带来一些额外的代表,只是说如果你SSR你的应用程序,你应该避免使用这个,因为在nodejs中
    元素
    将是
    未定义的
    。如果你把你的道具从你的制作中去掉,你在那里会很好的。但即便如此,您也会在开发构建中抛出一个错误。我得到警告
    失败的道具类型:“instanceof”的右侧不可调用
    如果我使用它,这在2019年是否不再有效?