反応コードのこの部分でコンパイル警告が表示される理由を理解しているいくつかの問題があります
_fetch('/users')
.then(res => res.json())
.then(data => {
data.map(users => {
console.log(users);
});
});
_
私が得ている警告は_Expected to return a value in arrow function array-callback-return
_です
しかし、私はまだ_/users
_からjsonオブジェクトの値を取得しており、それらは個別にコンソールに出力されます。オブジェクトは次のとおりです。
_ {
id: 1,
username: "Foo"
}, {
id: 2,
username: "Bar"
}
_
Returnステートメントがありませんか、またはmap
が.then()
の後に値を返す方法がありませんか?コンパイルの警告が表示される理由はわかりません。
_data.map
_関数(_Array.map
_仕様を確認: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map ) 1つの配列(あなたの場合はdata
)を新しい配列に変換します。このマッピングは、_data.map
_の引数によって定義されます。 _data.map
_(コールバック関数)の引数、あなたの場合は矢印関数users => {console.log(users);}
は値を返さなければなりません。各配列要素の値を返すことで、_data.map
_がマッピングを定義します。
しかし、あなたの場合、コールバック関数は何も返さず、単に_console.log
_ sを返します。あなたの場合、_data.forEach
_( https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/forEach )を使用できます'_Array.map
_機能を使用しないでください。
注:_data.map
_を使用することにした場合は、コールバックの引数として(複数ではなく)単一の名前を使用する必要があります。data.map(user => {console.log(user);});
は各ユーザーに対して呼び出されます。
MDNから:
Map()メソッドは、呼び出し配列内のすべての要素で提供された関数を呼び出した結果で新しい配列を作成します。
つまり、mapメソッドを返す必要があります。したがって、次のようにコードを変更する必要があります。
fetch('/users')
.then(res => res.json())
.then(data => {
data.map(users => {
return console.log(users);
});
});
またはmap()の代わりにforEach()を使用します
配列を変更する必要がなく、単にconsole.log()を実行する必要がない場合は、代わりにdata.forEach()を実行できます。警告は表示されません。 Mapは、配列を変換した後に値を返すことを期待しています。
fetch('/users')
.then(res => res.json())
.then(data => {
data.forEach(users => {
console.log(users);
});
});