質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

React.js

Reactは、アプリケーションのインターフェースを構築するためのオープンソースJavaScriptライブラリです。

Q&A

解決済

1回答

1387閲覧

React.jsでTypeError: Cannot read property 'map' of undefinedと表示される

React

総合スコア10

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

React.js

Reactは、アプリケーションのインターフェースを構築するためのオープンソースJavaScriptライブラリです。

0グッド

0クリップ

投稿2020/08/09 17:49

編集2020/08/09 17:50

前提・実現したいこと

コロナのトラッカー作りの最中で「'map'が未定義でプロパティが読み取れない」と表示されたのですが、mapを定義づけにしてプロパティを読み取れるようにするにはどうすればいいのでしょうか?

発生している問題・エラーメッセージ

イメージ説明

調べたこと

showDataOnMapのプロパティにアクセスしたかったので、util.jsの42行目に「console.log(showDataOnMap.URL)」と打ち込んでコンソールの方でエラーを確認してみたところ
イメージ説明

「Line 43:3: 'data' is not defined no-undef」と表示されました。

恐らくdataが定義されていなく、一連のエラーが発生したのではと考えています。

どこのどの部分にdataを定義づけをすればいいのか勉強不足で分からないので
回答を待つ間、「React 定義」、「JavaScript 定義」といったキーワードでもっと検索してみます。(調べ方間違ってると思うけど...)

該当のソースコード(util.js)

import React from "react"; import numeral from "numeral"; import { Circle, Popup } from "react-leaflet"; const casesTypeColors = { cases: { hex: "#CC1034", rgb: "rgb(204, 16, 52)", half_op: "rgba(204, 16, 52, 0.5)", multiplier: 800, }, recovered: { hex: "#7dd71d", rgb: "rgb(125, 215, 29)", half_op: "rgba(125, 215, 29, 0.5)", multiplier: 1200, }, deaths: { hex: "#fb4443", rgb: "rgb(251, 68, 67)", half_op: "rgba(251, 68, 67, 0.5)", multiplier: 2000, }, }; export const sortData = (data) => { let sortedData = [...data]; sortedData.sort((a, b) => { if (a.cases > b.cases) { return -1; } else { return 1; } }); return sortedData; }; export const prettyPrintStat = (stat) => stat ? `+${numeral(stat).format("0.0a")}` : "+0"; export const showDataOnMap = (data, casesType, country = "cases") => data.map((data, casesType, country) => ( <Circle center={[country.countryInfo.lat, country.countryInfo.long]} color={casesTypeColors[casesType].hex} fillColor={casesTypeColors[casesType].hex} fillOpacity={0.4} radius={ Math.sqrt(country[casesType]) * casesTypeColors[casesType].multiplier } > <Popup> <div className="info-container"> <div className="info-flag" style={{ backgroundImage: `url(${country.countryInfo.flag})` }} ></div> <div className="info-name">{country.country}</div> <div className="info-confirmed"> Cases: {numeral(country.cases).format("0,0")} </div> <div className="info-recovered"> Recovered: {numeral(country.recovered).format("0,0")} </div> <div className="info-deaths"> Deaths: {numeral(country.deaths).format("0,0")} </div> </div> </Popup> </Circle> ));

該当のソースコード(Map.js)

import React from "react"; import { Map as LeafletMap, TileLayer } from "react-leaflet"; import "./Map.css"; import { showDataOnMap } from "./util"; function Map({ countries, casesType, center, zoom }) { return ( <div className="map"> <LeafletMap center={center} zoom={zoom}> <TileLayer url="https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png" attribution='&copy; <a href="http://osm.org/copyright">OpenStreetMap</a> contributors' /> {showDataOnMap(countries.casesType)} </LeafletMap> </div> ); } export default Map;

補足情報(OS/参考記事/作成元動画)

OS Windows10
参考記事
作成元動画

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

{showDataOnMap(countries.casesType)}{showDataOnMap(countries, casesType)}の間違いでは?

countries.casesTypeundefined なら、showDataOnMap に渡される引数は undefined, undefined, "cases" であり、undefinedmap は定義されていないので、エラーになります。

投稿2020/08/09 19:12

maai

総合スコア463

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

React

2020/08/09 20:07

Map.jsの{showDataOnMap(countries.casesType)}を{showDataOnMap(countries, casesType)}に直してみたところ、「TypeError: Cannot read property 'lat' of undefined」と表示されました。 コンソールの方でも「Warning: Each child in a list should have a unique "key" prop.」と表示されるようになってもう何がなんだか????
maai

2020/08/10 04:03

export const showDataOnMap = (data, casesType, country = "cases") => data.map((data, casesType, country) => ( と center={[country.countryInfo.lat, country.countryInfo.long]} は見直した方が良さそうです。console.logすると分かりやすいと思います unique "key" prop.は別の問題なので、一旦上が動いてから調べ直すと良いです
React

2020/08/10 10:13

ありがとうございます! 作成元動画の動画を見直してshowDataOnMapを確認しましたが export const showDataOnMap = (data, casesType = "cases") =>と、なっており、data.mapの方もdata.map((country) => (となっていました。 これでもエラーはまだ残っているのですが、動画内では最終的なエラーについては何も触れていなかったので、エラーをあえて残していたのだと分かりました。おかげさまで無事完成しました。ありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問