[解決済み] アロー関数は代入を返してはいけないのですか?
2022-02-25 23:49:45
質問
私のコードはアプリでは正しく動作していますが、eslintはそれを好まず、代入を返してはいけないと言っています。これはどうしたことでしょうか?
<div ref={(el) => this.myCustomEl = el} />
解決方法は?
修正方法
<div ref={(el) => { this.myCustomEl = el }} />
説明の様子。
あなたの現在のコードは、それと同等です。
<div ref={(el) => { return this.myCustomEl = el }} />
this.myCustomEl = el の結果を返していますね。しかし、プログラミングで最もイライラするバグのひとつは、たとえば比較演算子(==または==)の代わりに代入(=)を誤って使ってしまったときに起こります。
// This function will always return **true**, surprisingly
function isEqual(a, b) {
// The warning would be thrown here, because you probably meant to type "a===b". The below function will always return true;
return a=b;
}
let k=false;
let j=true;
if(isEqual(k,j)){
// You'll be very, very, very confused as to why this code is reached because you literally just set k to be false and j to be true, so they should be different, right? Right?
thisWillExecuteUnexpectedly();
}
上記の場合、コンパイラの警告は理にかなっています。
k=true
は真と評価される(それに対して
k===true
と入力すると、意図しない動作をすることがあります。このように、eshint は代入を返すと、比較を返すつもりだったと判断し、注意するよう知らせてくれます。
あなたの場合、結果を返さないようにすれば解決します。これは、{}で囲み、returnステートメントを追加しないことで行います。
<div ref={(el) => { this.myCustomEl = el }} />
また、eshintの警告はこのように調整することができます。 https://eslint.org/docs/rules/no-return-assign
関連
-
[解決済み】 Uncaught Error: Invariant Violation: 解決済み】 Uncaught Error: Invariant Violation: Element type is invalid: expected a string (for built-in components) or a class/function but got: object.
-
[解決済み】Kendo Observable Bindingと併用する場合、Kendo Switch Labelsを変更することは可能ですか?[Kendo-UI]です。
-
[解決済み】HTMLの最初の行に予期しないトークン<がある。
-
[解決済み】Vueが定義されていない
-
[解決済み】react router v^4.0.0 Uncaught TypeError: 未定義のプロパティ'location'を読み取れない
-
[解決済み] JavaScriptで "use strict "は何をするのか、その根拠は?
-
[解決済み] HTML5のlocalStorageにオブジェクトを格納する方法は?
-
[解決済み] (a== 1 && a ==2 && a==3) が真に評価されることはあるのでしょうか?
-
[解決済み] jQueryで要素にスクロールする
-
[解決済み】JavaScriptの比較では、どちらの等号演算子(== vs ===)を使うべきですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】node.js TypeError: path must be absolute or specify root to res.sendFile [JSONのパースに失敗しました]。
-
[解決済み】document.getElementByIDは関数ではありません。
-
[解決済み】SecurityError: オリジンを持つフレームがクロスオリジンフレームにアクセスするのをブロックした
-
[解決済み】最大呼び出しスタックサイズ超過エラーとその修正方法とは?
-
[解決済み】BootstrapのCollapseが折りたたまれない
-
[解決済み】JavaScriptのボタンonclickが機能しない
-
[解決済み] [Solved] Uncaught TypeError: nullのプロパティ 'appendChild' を読み取ることができない。
-
[解決済み] エラー。モジュールhtmlが見つからない
-
[解決済み】React.jsの配列の子要素のユニークキーを理解する
-
[解決済み】Vueが定義されていない