Как пометить свойство как элемент DOM?
На этой странице говорится, что PropTypes.element
на самом деле является React, так что же эквивалентно элементу DOM?
Как пометить свойство как элемент DOM?
На этой странице говорится, что PropTypes.element
на самом деле является React, так что же эквивалентно элементу DOM?
PropTypes.instanceOf(Element)
Работает на меня. Вы также можете добавить isRequired:
PropTypes.instanceOf(Element).isRequired
PropTypes.elementType
, как описано здесь: title="какой правильный тип реквизита для ссылки в реакции"> stackoverflow.com/questions/48007326/
- person Pandaiolo; 06.09.2019
Element
будет undefined
в nodejs. Если вы удалите свои PropTypes из своей производственной сборки, у вас все будет хорошо. Но даже так вы выдаете ошибку в девелоперской сборке.
- person Carl von Buelow; 13.06.2020
Вы можете проверить, является ли переданное свойство экземпляром Element
:
Интерфейс Element представляет собой объект Document. Этот интерфейс описывает методы и свойства, общие для всех типов элементов. Конкретные поведения описаны в интерфейсах, которые наследуются от Element, но добавляют дополнительные функции. Например, интерфейс HTMLElement является базовым интерфейсом для элементов HTML, а интерфейс SVGElement — основой для всех элементов SVG.
class Some extends React.Component {
render() {
return (
<div> Hello </div>
);
}
}
const validateDOMElem = (props, propName, componentName) => {
if (props[propName] instanceof Element === false) {
return new Error(
'Invalid prop `' + propName + '` supplied to' +
' `' + componentName + '`. Validation failed.'
);
}
}
Some.propTypes = {
htmlElem: validateDOMElem,
};
const para = document.getElementById('para');
ReactDOM.render(<Some htmlElem={para} />, document.getElementById('app'));
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react-dom.js"></script>
<div id="app"></div>
<p id="para"></p>
PropTypes.instanceOf(Element)
- person Michael Radionov; 21.03.2017
Например, с компонентом списка:
MyList.propTypes = {
children: PropTypes.instanceOf(<li></li>),
}
Работает на меня.
Failed prop type: Right-hand side of 'instanceof' is not callable
, если я использую это, это больше не работает в 2019 году?
- person micnil; 07.09.2019
someNode.constructor.name
. - person Matthew Herbst   schedule 09.09.2016div
,span
,input
, что угодно. - person mpen   schedule 09.09.2016document.getElementById
или созданы с помощьюdocument.createElement
и неReact.createElement("input")
? - person mpen   schedule 09.09.2016node
слишком свободный. Он включает в себя числа, строки и массивы. - person mpen   schedule 09.09.2016