Visual Studio CodeでコンポーネントまたはHTML補完を使用する方法はありますか? Bootstrapなどのクラスがある場合は、各文字を手動で入力することはお勧めできません。たとえば、Emmetのような補完:ul>li*2>a
var React = require('react');
var Header = React.createClass({
render: function () {
return (
<nav className="navbar navbar-defaullt">
<div className="container-fluid">
<a href="/" className="navbar-brand">
<img width="50" height="50" src="images/logo.png" alt="logo" />
</a>
<ul className="nav navbar-nav">
<li><a href="/">Home</a></li>
<li><a href="/#about">About</a></li>
</ul>
</div>
</nav>
);
}
});
module.exports = Header;
Visual Studioコードは.jsx拡張子を検出し、デフォルトでemmetサポートを追加します(VSコード1.8.1を使用しています)
ただし、すべての反応ファイルに.js拡張を使用する場合は、VSコードウィンドウの右下隅でJavaScript Reactモードを.jsファイルに関連付けることができます。
2019:Reactのわかりやすい回答
ReactプロジェクトでJSX/HTMLオートコンプリートを取得する最も簡単な方法は、これをユーザー設定またはワークスペース設定(<project-path>/.vscode/settings.json
)に追加することです。
"emmet.includeLanguages": {
"javascript": "javascriptreact"
},
"emmet.triggerExpansionOnTab": true
変更を有効にするには、VS Codeを再起動する必要があります。
追伸React.jsプロジェクトでこのマッピングを行っていない場合は、KehkashanFazalの答えがおそらく役立つはずです。
誰かがまだこの問題に苦労している場合:
単純に設定することを発見しました
"emmet.syntaxProfiles": {
"javascript": "jsx"
},
hTML補完を有効にしません。しかし、使用:
"emmet.includeLanguages": {
"javascript": "html"
}
します。
emmet docs によると:
"emmet.includeLanguages": {}
デフォルトでサポートされていない言語でエメットの略語を有効にします。ここで、言語とサポートされているエメット言語の間にマッピングを追加します。
例:{"vue-html": "html", "javascript": "javascriptreact"}
画面の右下で適切な言語モードを選択するだけです:JavaScript React。に設定します
これらのソリューションはいずれも機能しませんでした...しかし、自動終了タグ拡張機能は機能します! https://marketplace.visualstudio.com/items?itemName=formulahendry.auto-close-tag
2018
VSCode
(ver 1.27.2)
を使用しています
React
で作業している場合でも、私の経験に基づいてください。 VSCode
で検出された言語は、まだVanilla JavaScript
です。そして、エメットは機能しませんでした。
VSCode
検出言語をJavaScript React
に変更することです。これは、単一のJS
ファイル専用です。Configure File Association for .js...
をクリックします
そしてJSX
を選択します。私の場合、これはすでに行っています。
ctrl + , (comma)
だけの設定に移動して開きます。emmet
またはEmmet
を入力して検索します。次に、上書きする設定をコピーします。私の場合:
{
"emmet.triggerExpansionOnTab": true,
"emmet.includeLanguages": {
"javascript": "javascriptreact"
},
}
注:jsx
のみjavascriptreact
を使用しようとしませんでした。
2番目と3番目のステップを実装しました。これで、Emmet
を実行できます。
。html、.js、および.jsxのタグを自動的に閉じる
そのまま使用できます。つまり、開始タグに閉じ括弧を入力すると、終了タグが自動的に挿入されます。
。jsxファイルの基本HTMLを使用したエメット
そのまま使用できます。
。jsファイルの基本HTMLを使用したエメット:
次の設定を追加します。これは、Emmetの略語の提案に必要であり、タブ拡張が一貫して機能するために必要です。
"emmet.includeLanguages": {
"javascript": "javascriptreact"
},
。jsファイルと.jsxファイルの両方でカスタムタグ(例:Reactコンポーネント)を使用したエメット
次の設定を追加します。
"emmet.triggerExpansionOnTab": true,
この設定では、Emmetはすべての単語をカスタムタグとして展開します(Reactコンポーネント名だけでなく)
また、Emmetを使用してReactコンポーネントをカスタムタグとして展開する場合、提案リストから実際にコンポーネント名を選択し、最初にそれを完了する必要があります(または、名前全体を手動で入力し、提案メニューを閉じるにはエスケープキー)。 Wordが展開された後、Emmetにカスタムタグを展開させるには、再度Tabキーを押す必要があります。
アクティブな機能リクエスト があり、この余分なステップを削除する可能性があります(提案を選択すると自動的に展開され、標準のhtmlタグの展開と同じように機能します)。
トラブルシューティング
VSCodeの最新バージョンがあることを確認してください。
次のデフォルト設定を変更していないことを確認してください。
"html.autoClosingTags": true,
"javascript.autoClosingTags": true,
"TypeScript.autoClosingTags": true,
// read the GitHub issue listed above if you're curious why this is required).
"editor.wordBasedSuggestions": true,
// you obviously don't want javascript, javascriptreact included in here if you want Emmet to be available in those files
"emmet.excludeLanguages": [
"markdown"
],
以下の手順に従うだけで問題を解決できました。
これらの行をファイルに追加します。
"emmet.triggerExpansionOnTab": true,
"emmet.includeLanguages": {
"javascript": "javascriptreact"
}
詳細を知りたい場合は、 this リンクを確認してください。
visual Studio Codeの自動クローズ拡張を使用できます。追伸拡張機能をインストールすると、VS Codeを再読み込みするか、VS Codeを再度開くか、タグ拡張機能を自動的に閉じて[再読み込み]をクリックするまで、オートコンプリートは機能しません。
自動終了タグ 拡張のリンク
JSXで自動終了タグを取得するには、2つのステップが必要でした。
"emmet.includeLanguages"
の設定については、上記のKehkashan Fazalの指示に従ってくださいformulahendry.auto-close-tag
)これで、ニースの自動終了JSXタグができました!
React Babelのオートコンプリートは昨日まで正常に機能していました。
これらの答えはどれも役に立たなかったので、コンピューターを再起動しました。魅力のように働いた;)
JSXファイルでのみ機能します。 JSで動作しないようにします。
"files.associations": {
"*.js": "javascript",
"*.jsx": "javascriptreact",
},
"emmet.triggerExpansionOnTab": true,
"emmet.includeLanguages": {
"javascriptreact": "javascriptreact"
},
私はすべての答えを投げに行き、この構成は私のために働いた。言語を含め、syntaxProfileを追加する必要がありました。トリガー拡張なしでは何も機能しませんでしたが、今はTabボタンを押すだけで結果が得られます。
"emmet.includeLanguages": {
"javascript": "javascriptreact"
},
"emmet.syntaxProfiles": {
"javascript": "jsx"
},
"emmet.triggerExpansionOnTab": true
私はさまざまなプロジェクトに取り組んでいましたが、大きな設定ファイルがあります。
設定を確認したところ、この設定がすべてを台無しにしていることがわかりました。
"emmet.showExpandedAbbreviation": "inMarkupAndStylesheetFilesOnly"
それでコメントしました。そして、すべてはReactアプリで完璧に機能します。ありがとう