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

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

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

Firebaseは、Googleが提供するBasSサービスの一つ。リアルタイム通知可能、並びにアクセス制御ができるオブジェクトデータベース機能を備えます。さらに認証機能、アプリケーションのログ解析機能などの利用も可能です。

TypeScript

TypeScriptは、マイクロソフトによって開発された フリーでオープンソースのプログラミング言語です。 TypeScriptは、JavaScriptの構文の拡張であるので、既存の JavaScriptのコードにわずかな修正を加えれば動作します。

React.js

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

Q&A

解決済

1回答

1877閲覧

Cannot read property 'map' of undefinedのエラー解決

exad916

総合スコア1

Firebase

Firebaseは、Googleが提供するBasSサービスの一つ。リアルタイム通知可能、並びにアクセス制御ができるオブジェクトデータベース機能を備えます。さらに認証機能、アプリケーションのログ解析機能などの利用も可能です。

TypeScript

TypeScriptは、マイクロソフトによって開発された フリーでオープンソースのプログラミング言語です。 TypeScriptは、JavaScriptの構文の拡張であるので、既存の JavaScriptのコードにわずかな修正を加えれば動作します。

React.js

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

0グッド

0クリップ

投稿2021/08/19 08:03

前提・実現したいこと

React、Typescriptで
FireBaseのデータをレンダリングしようとしているのですが、
map処理のところでエラーが出てしまいました。

初歩的な質問で恐縮ですが、
アドバイスいただけると幸いです。

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

TypeError: Cannot read property 'map' of undefined

該当のソースコード

Typescript

1import React, { useState, useEffect } from 'react'; 2import './App.css'; 3import { db } from './firebase'; 4 5const App: React.FC = () => { 6 const [ posts, setPosts ] = useState([{ id: "", artist: "", name: "", url: ""}]) 7 useEffect(() => { 8 const unSub = db.collection("posts").doc("content").collection("song").doc("song1").onSnapshot((snapshot: any) =>{ 9 setPosts( 10 snapshot.docs.map((doc: any)=> ({id: doc.id, artist: doc.data().artist, name: doc.data().name, url: doc.data().url})) 11 ); 12 }); 13 return () => unSub(); 14 }, [])

試したこと

以下のコードでは無事にレンダリングできたので、
このコードをベースにいじってみました。

const App: React.FC = () => { const [ posts, setPosts ] = useState([{ id: "", content: ""}]) useEffect(() => { const unSub = db.collection("posts").onSnapshot((snapshot) =>{ setPosts( snapshot.docs.map((doc)=> ({id: doc.id, content: doc.data().content})) ); }); return () => unSub(); }, [])

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

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

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

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

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

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

hoshi-takanori

2021/08/19 10:27

collection ど document で snapshot の型が異なるからでは。
exad916

2021/08/20 01:49

なるほど・・・!ありがとうございます!確認してみます!
FKM

2021/08/20 03:06

firebaseのcollectionとdocの役割についてもっと理解すべきなのでは。ただ、コピペ元のソースは動いてるといわれても、それはあくまでその条件に合致しているからに過ぎません。
exad916

2021/08/20 03:14

ありがとうございます!ドキュメントを改めて読みます!
guest

回答1

0

ベストアンサー

mapというプロパティがない、といってるので、そのmapがくっついてるやつになにが入ってるか調べてみては

投稿2021/08/19 08:28

y_waiwai

総合スコア88024

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

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

exad916

2021/08/20 01:50

ありがとうございます!確認してみます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.37%

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

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

質問する

関連した質問