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

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

新規登録して質問してみよう
ただいま回答率
85.31%
React.js

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

Q&A

解決済

2回答

1843閲覧

Reactのコンポーネント機能を使ってテーブルを表示するためには自分のコードをどのように修正すれば良いでしょうか?

echizeyayota

総合スコア106

React.js

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

0グッド

0クリップ

投稿2022/05/09 08:34

いつもお世話になっています。
下記の質問についてご存知の方がいらっしゃいましたらご教示を願います。


【質問の主旨】

Reactのコンポーネント機能を使って下記のテーブルを作成したいと考えています。

イメージ説明

ですが自分が書いたコードでは、下記の通りテーブルの内容が表示されません。

イメージ説明

自分のコードをどのように修正すれば、テーブルの内容が表示されるようになるでしょうか?

【質問の補足】

1. 見本となるReactのコードについて

【質問の主旨】で1枚目の画像で表されたテーブルは、主にこちらのコードを見本としています。

2. 見本となるコードの修正について

ただし、【質問の補足】の1で示したコードをそのまま使うと、Warning: ReactDOM.render is supported in React 18. というエラーが表示されますので、
Reactのドキュメントに基づいて修正をしています。

3. 自分が書いたコード

【質問の補足】の1と2を踏まえた上で、自分が書いたReactのコードはGithubにアップしています。その中でもテーブルの内容に関するTable.jsは以下の通りです。

import React, {Component} from 'react' const TableHeader = () => { return ( <thead> <tr> <th>Name</th> <th>Job</th> <th>Remove</th> </tr> </thead> ) } const TableBody = props => { const rows = props.characterData?.map((row, index) => { return ( <tr key={index}> <td>{row.name}</td> <td>{row.job}</td> <td> <button onClick={() => props.removeCharacter(index)}>Delete</button> </td> </tr> ) }) return <tbody>{rows}</tbody> } const Table = (props) => { const {characterData, removeCharacter} = props return ( <table> <TableHeader /> <TableBody characterData={characterData} removeCharacter={removeCharacter} /> </table> ) } export default Table;

以上、ご確認をよろしくお願いします。

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

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

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

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

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

退会済みユーザー

退会済みユーザー

2022/05/10 02:22

質問者さん、無言ですか、回答がでているのでそれら対するフィードバックを書いてください。役に立った/立たなかったぐらいはすぐにでも返事できるのでは。役に立たなかったならどこがダメかを書くとより期待に近い回答だ出てくるかも。とにかく無言で放置は NG です。
echizeyayota

2022/05/10 07:01

SurferOnWww さん。コメントありがとうございます。 質問をしたのち所用があったため、しばらくの間コメントができませんでした。 まことに恐れ入ります。
退会済みユーザー

退会済みユーザー

2022/05/10 08:08

yoshiokatsuneoさんの回答で解決できたのであれば、その回答にベストアンサーを付けてこのスレッドはクローズしてください。
echizeyayota

2022/05/10 10:41

SurferOnWww さん。 コメントありがとうございます。 yoshiokatsuneoさんの回答をベストアンサーにして、今回の質問をクローズ(解決済み)にしました。 今後ともどうぞよろしくお願いします。
guest

回答2

0

質問者さんのケースで参考になるかどうかわかりませんが、Visual Studio 2022 のテンプレートで生成されるプロジェクトで以下のようなテーブルを表示するものがありますので、そのコードを紹介しておきます。

イメージ説明

import React, { Component } from 'react'; export class FetchData extends Component { static displayName = FetchData.name; constructor(props) { super(props); this.state = { forecasts: [], loading: true }; } componentDidMount() { this.populateWeatherData(); } static renderForecastsTable(forecasts) { return ( <table className='table table-striped' aria-labelledby="tabelLabel"> <thead> <tr> <th>Date</th> <th>Temp. (C)</th> <th>Temp. (F)</th> <th>Summary</th> </tr> </thead> <tbody> {forecasts.map(forecast => <tr key={forecast.date}> <td>{forecast.date}</td> <td>{forecast.temperatureC}</td> <td>{forecast.temperatureF}</td> <td>{forecast.summary}</td> </tr> )} </tbody> </table> ); } render() { let contents = this.state.loading ? <p><em>Loading...</em></p> : FetchData.renderForecastsTable(this.state.forecasts); return ( <div> <h1 id="tabelLabel" >Weather forecast</h1> <p>This component demonstrates fetching data from the server.</p> {contents} </div> ); } async populateWeatherData() { const response = await fetch('weatherforecast'); const data = await response.json(); this.setState({ forecasts: data, loading: false }); } }

スタイルには Bootstrap 5 を使っています。

表示するデータ(上のコードの data)は以下のような JavaScript オブジェクトで、Web API から fetch メソッドを使用して取得した JSON 文字列から取得しています。

イメージ説明

投稿2022/05/09 09:28

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

echizeyayota

2022/05/10 06:59

SurferOnWww さん。 コメントありがとうございます。 Visual Studio 2022 のテンプレートで生成されるプロジェクトのご紹介ありがとうございます。 Reactの理解を深める上で参考にさせていただきます。
guest

0

ベストアンサー

class App extends Component { state = { charcters: [

ここで、"characters"の綴りが間違っていて"charcters"になっていますので、charactersにすると動くようです。
スペルチェッカのあるエディタを使うといいかと思います。

投稿2022/05/09 09:02

yoshiokatsuneo

総合スコア27

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

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

echizeyayota

2022/05/10 06:56

yoshiokatsuneo さん。 コメントありがとうございます。 ご指摘のように"charcters"の綴りを"characters"に直すと、テーブルの内容も表示されるようになりました。 なお、スペルチェッカーとしてVSCodeの拡張機能であるCode Spell Checkerをインストールしておきました。 "charcters"のままにしておくと、単語に下線が引かれるようになりました。 https://marketplace.visualstudio.com/items?itemName=streetsidesoftware.code-spell-checker 今後ともどうぞよろしくお願いします。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.31%

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

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

質問する

関連した質問