Visual Studio Code 不会自动完成 JSX 属性

IT技术 reactjs visual-studio-code jsx
2021-05-22 22:21:29

我正在将 Visual Studio Code 用于 React 项目,并且有很多.js看起来像这样文件:

import React, { PureComponent } from 'react'

class Foobar extends PureComponent {
  render() {
    return (
      <main>
        Foo
      </main>
    )
  }

}

export default Foobar

React 自身方法的自动完成工作正常(例如添加componentWill...到组件中),但在键入 JSX 时我没有得到任何建议。不建议输入类似onCli...into 的内容mainonClick

我找到了一些关于typescript定义的教程,所以我安装了:

"@types/react": "^16.0.36",
"@types/react-dom": "^16.0.3",

但这没有任何作用。即使我将文件从 重命名.js.jsx.ts或者.tsx我不会自动完成 JSX 属性。

有什么我错过的吗?

我还创建了一个jsconfig.json

{
  "compilerOptions": {
    "target": "ES6",
    "module": "commonjs",
    "allowSyntheticDefaultImports": true
  },
  "exclude": [
    "node_modules"
  ]
}

并将其添加到我的 VS Code 配置中:

"emmet.includeLanguages": {
    "javascript": "javascriptreact"
},
"emmet.syntaxProfiles": {
    "javascript": "jsx"
},
"files.associations": {
    "*.js": "javascriptreact"
}
2个回答

也许,使用 vscode v1.63 会有所帮助。它补充说:

JSX 属性补全

在 JavaScript 和 TypeScript 中完成 JSX 属性时,VS Code 现在会自动插入属性值:

这些完成的行为可以使用javascript.preferences.jsxAttributeCompletionStyle进行配置 typescript.preferences.jsxAttributeCompletionStyle可能的设置值为:

auto— 根据类型推断属性样式。字符串使用, attr=""而其他类型使用attr={}.
braces— 始终使用大括号。
None— 只需填写属性名称即可。

请参阅发行说明:jsx 属性完成

如上一个答案所述,2021 年 11 月(版本 1.63)版本包括JSX 属性完成,只需更新并重新启动 VSCode,在菜单栏代码>重新启动更新并打开您的设置代码> 设置以自定义选项,从引号attr=''(默认)到括号attr={}或无,这只是完成属性。或者在你的settings.json文件中添加这个

"javascript.preferences.jsxAttributeCompletionStyle": "auto"