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

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

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

Cloud Firestore は、自動スケーリングと高性能を実現し、アプリケーション開発を簡素化するように構築された NoSQLドキュメントデータベースです。

TypeScript

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

コードレビュー

コードレビューは、ソフトウェア開発の一工程で、 ソースコードの検査を行い、開発工程で見過ごされた誤りを検出する事で、 ソフトウェア品質を高めるためのものです。

React.js

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

Q&A

解決済

1回答

4836閲覧

react(typescript)を使ったコードの、SyntaxError(Unexpected token~)が解消できない

wwwww

総合スコア41

Cloud Firestore

Cloud Firestore は、自動スケーリングと高性能を実現し、アプリケーション開発を簡素化するように構築された NoSQLドキュメントデータベースです。

TypeScript

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

コードレビュー

コードレビューは、ソフトウェア開発の一工程で、 ソースコードの検査を行い、開発工程で見過ごされた誤りを検出する事で、 ソフトウェア品質を高めるためのものです。

React.js

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

0グッド

0クリップ

投稿2020/11/03 17:00

■環境

・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

以上、不明点等ありましたらその旨ご教示くださいますと幸いでございます。
何卒よろしくお願いいたします。

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

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

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

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

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

guest

回答1

0

ベストアンサー

.tsファイルにJSXは書けません。拡張子を.tsxに変更してください。

投稿2020/11/03 18:10

maisumakun

総合スコア146018

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

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

wwwww

2020/11/04 13:05

ありがとうございます! ご記載のとおりtsxにして再実行したら、当該エラーは解消しました!(また別のエラーが出現しました…) 初歩的な問題にてお手数おかけいたしましたm(_ _)m
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問