1. ホーム
  2. javascript

[解決済み] DOMオブジェクトにプロパティを設定する際にno-param-reassignを回避する方法

2022-05-17 18:42:52

質問

DOM オブジェクトにプロパティを設定することを主目的としたメソッドがあります。

function (el) {
  el.expando = {};
}

AirBnBのコードスタイルを使っていますが、これはESLintに no-param-reassign エラーを投げます。

error 関数パラメータ 'el' への代入 no-param-reassign

AirBnBのコードスタイルに準拠しつつ、引数として渡されたDOMオブジェクトを操作するにはどうしたらよいでしょうか。

誰かが /* eslint react/prop-types: 0 */ を参照する 別の問題 がありますが、私が間違っていなければ、これはreactにはよく当てはまりますが、ネイティブのDOM操作には当てはまりません。

また、私はコードスタイルを変更することが答えだとは思いません。標準的なスタイルを使用する利点の1つは、プロジェクト間で一貫したコードを持つことであり、自由にルールを変更することは、AirBnBのような主要なコードスタイルの誤用に感じられると思います。

ちなみに、GitHub で AirBnB に、こういう場合はどうするのがいいと思うか聞いてみました。 を課題番号766で .

どのように解決するのですか?

@Mathleticsが提案するように、次のようにします。 ルールを無効にする を完全に無効にするには、これを .eslintrc.json ファイルに追加します。

"rules": {
  "no-param-reassign": 0
}

あるいは、paramプロパティに特化したルールを無効化することもできます。

"rules": {
  "no-param-reassign": [2, { "props": false }]
}

あるいは、その関数のルールを無効化することもできます。

/* eslint-disable no-param-reassign */
function (el) {
  el.expando = {};
}
/* eslint-enable no-param-reassign */

またはその行のみ

function (el) {
  el.expando = {}; // eslint-disable-line no-param-reassign
}