web-dev-qa-db-ja.com

array.mapのESLintprefer-arrow-callback

import React from 'react';

export default class UIColours extends React.Component {
  displayName = 'UIColours'

  render() {
    const colours = ['black', 'red', 'white', 'orange', 'green', 'yellow', 'blue', 'darkblue', 'lilac', 'purple', 'darkPurple'];
    return (
      <div className="ui-colours-container row bg-white">
        <div className="col-md-16 col-xs-16 light">
          <div className="color-swatches">
            {colours.map(function(colour, key) {
              return (
                <div key={key} className={'strong color-swatch bg-' + colour}>
                  <p>{colour}</p>
                </div>
              );
            })}
          </div>
        </div>
      </div>
   );
  }
}

12:26エラー予期しない関数式prefer-arrow-callback

マップのドキュメントを見ましたが、複数のパラメータの良い例が見つかりません。

10
azz0r

このESLintルールは、コールバックとして無名関数があるために発生するため、代わりに矢印関数を使用することをお勧めします。矢印関数で複数のパラメータを使用するには、パラメータを括弧で囲む必要があります。例:

someArray.map(function(value, index) {
  // do something
});

someArray.map((value, index) => {
  // do something
});

いつものように、 矢印関数のMDNドキュメント には、矢印関数で使用できるバリエーションの非常に詳細な説明があります。

または、ESLintルールを無効にするか、名前付きコールバックについて警告しないように変更することもできます。そのESLintルールのドキュメントは prefer-arrow-callback です。

26
Scott

mapを次のように書き直すことができます。

{colours.map(colour => (
  <div key={`colour-${colour}`} className={`strong color-swatch bg-${colour}`}>
    <p>{colour}</p>
  </div>
)}

色の名前は一意のように見えるので、問題なくkeysとして使用できます。

1