在 react 项目中编写 jsx 时,vs code 默认无法对 `div` 等 html 标签触发 tab 自动闭合,根本原因在于文件未被识别为 jsx/tsx 类型——只需将 `.js`/`.ts` 文件重命名为 `.jsx`/`.tsx` 即可启用原生标签补全。
React 组件中的模板语法本质上是 JSX(JavaScript XML),它虽运行于 JavaScript 环境,但VS Code 的 HTML 片段(snippets)和自动闭合功能仅在明确的语言模式下激活。当你使用 .js 或 .ts 后缀时,编辑器将文件识别为纯 JavaScript/TypeScript,此时 div → Tab 不会生成
;而切换为 .jsx 或 .tsx 后,VS Code 自动切换至 "JavaScript React" 或 "TypeScript React" 语言模式,HTML 标签补全、属性提示、自闭合(如 )、以及 Tab 触发的成对包裹(div + Tab → )等功能立即生效。✅ 正确做法:
? 小技巧:
你还可以在文件顶部添加注释显式声明语言模式(临时生效):
// @ts-check /** @jsxImportSource react */
但推荐优先使用标准后缀,确保语法高亮、ESLint、Prettier 和补全功能协同工作。
⚠️ 注意事项:

总之,文件后缀即契约:.jsx 不仅是约定,更是告诉编辑器“此处需以 React 意图解析 HTML-like 语法”。一次重命名,即可解锁完整的 JSX 开发体验。