注释从这开始~

总览

当组件名称以小写字母结尾时,会导致"Property does not exist on type 'JSX.IntrinsicElements'"谬误。为了解决该谬误,确保组件名称总是以大写字母结尾,装置React申明文件并重启你的开发服务器。

这里有个示例用来展现谬误是如何产生的。

// App.tsx// ️ name starts with lowercase letterfunction myComponent() {  return <h1>Hello world</h1>;}function App() {  return (    <div>      {/* ⛔️ Property does not exist on type 'JSX.IntrinsicElements'. */}      <myComponent />    </div>  );}export default App;

上述代码片段的问题在于,myComponent是以小写字母结尾的。

组件大写

为了解决该问题,请确保所有的组件名称均以大写字母结尾。

// App.tsxfunction MyComponent() {  return <h1>Hello world</h1>;}function App() {  return (    <div>      <MyComponent />    </div>  );}export default App;

React应用这种命名常规来辨别pdivspan等内置元素和咱们定义的自定义组件。

如果谬误仍未解决,尝试重启IDE和开发服务器。

类型申明

如果那都没有帮忙,确保装置了react的类型申明文件。在我的项目的根目录下关上终端,并运行上面的命令:

# ️ with NPMnpm install --save-dev @types/react @types/react-dom# ----------------------------------------------# ️ with YARNyarn add @types/react @types/react-dom --dev

如果谬误仍未解决,尝试删除node_modules以及package-lock.json(不是package.json)文件,从新运行npm install并重启IDE。

# ️ delete node_modules and package-lock.jsonrm -rf node_modulesrm -f package-lock.json# ️ clean npm cachenpm cache clean --forcenpm install

如果谬误依然存在,请确保重新启动你的IDE和开发服务器。VSCode经常出现故障,重启有时会解决一些问题。

总结

导致该问题的起因是因为自定义组件没有以大写字母结尾,因为React是通过这种形式来辨别内置元素和自定义组件。