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

Posted

技术标签:

【中文标题】Visual Studio Code 不会自动完成 JSX 属性【英文标题】:Visual Studio Code doesn't autocomplete JSX attributes 【发布时间】:2018-07-18 03:10:22 【问题描述】:

我正在为一个 React 项目使用 Visual Studio Code,并且有很多 .js 文件,如下所示:

import React,  PureComponent  from 'react'

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



export default Foobar

React 自己的方法的自动补全效果很好(比如将componentWill... 添加到组件中),但是在输入 JSX 时我没有得到任何建议。在main 中键入onCli... 之类的内容并不建议onClick

我找到了一些关于打字稿定义的教程,所以我已经安装了:

"@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"

【问题讨论】:

您是否假设在覆盖React.Component 的抽象方法时,这应该是基于自动完成“智能感知”的默认行为? 我认为 VS Code 至少会自动完成普通的 html 属性,例如 nametype 等等——就像普通的 .html 文件一样。 明白——你检查this thread了吗? 是的,已经检查过了 :( 噢……这也是我的问题:github.com/Microsoft/vscode/issues/41123 【参考方案1】:

如previous answer 中所述,November 2021 (version 1.63) 版本包括JSX attribute completions,只需更新并重新启动 VSCode,在菜单栏 代码 > 重新启动以更新 并打开您的设置代码 > Settings 自定义选项,从引号 attr=''(默认)到括号 attr= 或无,这只是完成属性。或者将其添加到您的 settings.json 文件中:

"javascript.preferences.jsxAttributeCompletionStyle": "auto"

【讨论】:

我不得不问这是否对我的回答增加了任何实质性内容?【参考方案2】:

也许,使用 vscode v1.63 会有所帮助。它添加了这个:

JSX 属性补全

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

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

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

见release notes: jsx attribute completions

【讨论】:

以上是关于Visual Studio Code 不会自动完成 JSX 属性的主要内容,如果未能解决你的问题,请参考以下文章

Visual Studio Code突然失去了Unity的自动完成功能

自动完成在 Visual Studio Code 中的 ASP.NET Core 5 Razor Tag Helper 中不起作用

如何在 Visual Studio Code 中自动获取参数名称?

Visual Studio Code 保存时自动格式化的问题

Visual Studio Code - Angular 2 自动导入扩展

visual-studio-code 中的自动右括号不适用于 js 和 jsx 文件