前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >React报错之Property does not exist on type 'JSX.IntrinsicElements'

React报错之Property does not exist on type 'JSX.IntrinsicElements'

作者头像
chuckQu
发布2022-09-20 11:39:15
2.1K0
发布2022-09-20 11:39:15
举报
文章被收录于专栏:前端F2E

总览

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

property-does-not-exist-on-type-jsx-intrinsicelements.png

这里有个示例用来展示错误是如何发生的。

代码语言:javascript
复制
// App.tsx

// 👇️ name starts with lowercase letter
function myComponent() {
  return <h1>Hello world</h1>;
}

function App() {
  return (
    <div>
      {/* ⛔️ Property does not exist on type 'JSX.IntrinsicElements'. */}
      <myComponent />
    </div>
  );
}

export default App;

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

组件大写

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

代码语言:javascript
复制
// App.tsx

function MyComponent() {
  return <h1>Hello world</h1>;
}

function App() {
  return (
    <div>
      <MyComponent />
    </div>
  );
}

export default App;

React使用这种命名惯例来区分pdivspan等内置元素和我们定义的自定义组件。

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

类型声明

如果那都没有帮助,确保安装了react的类型声明文件。在项目的根目录下打开终端,并运行下面的命令:

代码语言:javascript
复制
# 👇️ with NPM
npm install --save-dev @types/react @types/react-dom

# ----------------------------------------------

# 👇️ with YARN
yarn add @types/react @types/react-dom --dev

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

代码语言:javascript
复制
# 👇️ delete node_modules and package-lock.json
rm -rf node_modules
rm -f package-lock.json

# 👇️ clean npm cache
npm cache clean --force

npm install

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

总结

导致该问题的原因是因为自定义组件没有以大写字母开头,因为React是通过这种方式来区分内置元素和自定义组件。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-08-30,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 前端F2E 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 总览
  • 组件大写
  • 类型声明
  • 总结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档