如何检查对象是否是 JSX 的输出?

jcu*_*bic 1 javascript jsx reactjs preact

是否可以检查对象是否是 JSX 可能是某些执行此操作的函数。我对 React 和 Preact 感兴趣。

var x = <App/>
var y = <div>xxx</div>
Run Code Online (Sandbox Code Playgroud)

我想出了这个:

function isJSX(x) {
   return typeof x.props === 'object' && x.props !== null && typeof x.type !== 'undefined';
}
Run Code Online (Sandbox Code Playgroud)

有没有更好的办法?我不确定其他库,如 HyperApp 和 Preact。这个功能可靠吗?输出来自 Babel。是否有规范显示 JSX 转译器的输出应该是什么?

这是我的测试笔

Dup*_*cas 6

jsx主要是语法糖React.createElement。您可以使用 React 提供的帮助程序来检查给定的内容element是否有效

const isValid = React.isValidElement(element)
Run Code Online (Sandbox Code Playgroud)