■環境
・windows10(home)
・react@16.14.0
・typescript@4.0.3
■困っていること
amazon(kindle書籍)で購入した初心者向けの参考書をもとに、React(Typescript)・Firebaseの学習をしています。
サンプルコードのとおりに進めている自己認識なのですが、「npm start」すると、以下エラーが出てしまっており、自己解決できずご質問させていただきました次第です。
■サンプルコードの趣旨
(前画面に設置された検索枠に入力されたワードをkeywordに持つ)画像データをfirestoreから検索・表示するための画面になります。
…(当コードに於いては、)前画面の検索文字は、useParamsを使って、keywordという変数に格納→firestoreの「TileData」のうち、keywordに対象検索文字を含むレコードを、「TileData」型変数(types.tsという型定義のみファイルで定義)として格納し、表示に至ります。
firestoreに格納したデータ
エラーに関する現状理解・追えていること
「data.map((tile)」の、dataがmapできない旨のエラー対象と認識しています。
ですので、dataという変数の定義(※。9行目)をみると、
※9行目:const[data,setData]=useState<TileData[]>([]);
(少なくとも初期値にて)配列として型定義をしているので、変数dataが配列以外になっている可能性はないもの、と想定しております。が、、mapでの繰り返し処理はできない…という壁に現状で止まっている次第でございます。。
■エラー内容詳細
SyntaxError: ~resultImageList.ts: Unexpected token, expected "," (32:11) 30 | return ( 31 | <div> 32 | {data.map((tile)=>( ^ 33 | <div> 34 | <img src={tile.image} alt={tile.title} /> 35 | </div>
■関連するサンプルコード詳細
★resultImageList.ts
typescript
1import React,{FC,useState,useEffect} from "react"; 2import {useParams} from 'react-router-dom'; 3 4import firebase from '../../firebase'; 5import {TileData} from "../../types/types"; 6 7 8const ImageItemList:FC=()=>{ 9 const[data,setData]=useState<TileData[]>([]); 10 const{keyword}=useParams(); 11 12 const getData = async(searchWord: string | undefined) => { 13 const db = firebase.firestore(); 14 const tileDataRef = db.collection("tileData"); 15 const searchedData = tileDataRef.where("keyword","array-contains",searchWord); 16 const snapShot = await searchedData.get(); 17 const temporaryData: object[] = []; 18 19 snapShot.docs.map(doc => { 20 temporaryData.push(doc.data()); 21 }) 22 23 setData(temporaryData as TileData[]); 24 } 25 26 useEffect(() => { 27 getData(keyword); 28 },[]); 29 30 return ( 31 <div> 32 {data.map((tile)=>( 33 <div> 34 <img src={tile.image} alt={tile.title} /> 35 </div> 36 ))} 37 </div> 38 ) 39} 40export default ImageItemList;
★types.ts
typescript
1export type TileData={ 2 image: string; 3 keyword:string[]; 4 title: string; 5} 6
以上、不明点等ありましたらその旨ご教示くださいますと幸いでございます。
何卒よろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/11/04 13:05