質問するログイン新規登録

Q&A

1回答

362閲覧

【React】apiから取得した値が表示できない

sukiyakicool

総合スコア0

Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

JavaScript

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

React.js

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

0グッド

0クリップ

投稿2024/08/25 10:10

編集2024/09/01 16:14

0

0

実現したいこと

apiから取得したDBの値が画面に表示されるようにしたいです。

発生している問題・分からないこと

画面に何も表示されていません。

エラーメッセージ

error

1コンパイルエラー:なし 2実行時エラー  :なし 3※ただし、10分くらいするとデベロッパーツールのコンソールタブに以下エラーが表示されます。 4Unchecked runtime.lastError: A listener indicated an asynchronous response by returning true, but the message channel closed before a response was received

該当のソースコード

aplication ├─client │ ├─node_modules │ ├─public │ ├─src │ ├App.css │ ├App.js │ ├index.js │ ├reportWebVitals.js │ ├─.gitignore │ ├─package.json │ ├─package-lock.json │ ├─README.md ├─server │ ├─node_modules │ ├─index.js │ ├─package.json │ ├─package-lock.json

client/src/index.js

1import React, { useState, useEffect } from "react"; 2import './App.css'; 3import Axios from "axios"; 4 5function App() { 6const [categoryList, setCategoryList] = useState([]); 7 8useEffect(() => { 9 Axios.get("http://localhost:5000/api/get/dish").then((response) => { 10 console.log("API Response:", response); 11 setCategoryList(response.data); 12 console.log(response); 13 }) 14 .catch((error) => { 15 console.error("There was an error fetching the data:", error); 16 }); 17}, []); 18 return ( 19 <div className="App"> 20 <h1>リストで表示</h1> 21 <ul> 22 {categoryList.map((val, index) => { 23 console.log(val); 24 return <li key={index}>{val.name}</li> 25 })} 26 </ul> 27 </div> 28 ); 29} 30export default App; 31

server/index.js

1const express = require('express'); 2const app = express(); 3const cors = require('cors'); 4const mysql = require('mysql2'); 5 6const db = mysql.createPool({ 7 host: 'localhost', 8 user: 'mysql', 9 password: 'root', 10 database: 'sys', 11}); 12 13app.use(cors()); 14 15app.get("/api/get/dish", (req, res) => { 16 17const sqlSelect = "SELECT * FROM dish ORDER BY id"; 18db.query(sqlSelect, (err, result) => { 19 res.send(result); 20 }); 21}); 22app.listen(5000, () => { 23 console.log('running on port 5000'); 24}); 25 26

試したこと・調べたこと

  • teratailやGoogle等で検索した
  • ソースコードを自分なりに変更した
  • 知人に聞いた
  • その他
上記の詳細・結果

DBの接続は問題なくできていることは確認しています
以下、apiエンドポイントの結果です。
イメージ説明

補足

◆以下のサイトを参考に実施しています。
https://qiita.com/nemutya/items/b4c606168aa5be610e1e

◆【09/02追記】
ソースコードでコンソールログに出力するようにコードを書いているのですが、
ブラウザ上でなぜかコンソールログの出力内容を確認できないです。。。
イメージ説明

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

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

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

guest

回答1

0

ググるとこんな情報ありました。

https://qiita.com/yamaki_777/items/102eb9f1667003ec4a9d

chrome の 拡張機能の影響でそのメッセージが出る可能性があるらしいですが、どうでしょうか。
ただ、このメッセージは無視でいいらしいので、画面に表示されないのは別の理由かもしれません。

ソースと添付のスクショ見て気になるのは、
return <li key={index}>{val.name}</li>
で、キー(name)が小文字ですが、スクショのJSONは
[{"ID": 1, "NAME": "ハンバーグ", ...
で、キーが大文字です。JavaScriptは大文字小文字を区別するので合わせる必要があります。

投稿2024/08/26 08:46

umau

総合スコア831

sukiyakicool

2024/09/01 15:57

ご回答ありがとうございます。 試しに該当の部分を修正して、大文字にしたのですが、変わらず画面には反映されませんでした。。。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.29%

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

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

質問する

関連した質問