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