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

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

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

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

Q&A

解決済

1回答

2098閲覧

useState()の初期値をどう設定すればよいかわからない

butsuli_shine

総合スコア29

React.js

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

0グッド

0クリップ

投稿2021/04/14 07:34

編集2021/04/14 07:36

実現したいこと

axios.get()で持ってきたデータをsetStateしたい

コード

import React, { useEffect, useState } from 'react'; function App() { [data, setData] = useState([]); useEffect( () => { const get = async () => { const result = await getData(); //getData()は他ファイルにある関数群で動作確認済みです. setState(result.data); } get(); }, [] ) return ( // 省略 ) } export default App;

うまくいかないこと

持ってきたデータがObject型でその中にある配列のみをsetStateしたいのですが

Error: Objects are not valid as a React child (found: object with keys []). If you meant to render a collection of children, use an array instead.

というエラーが出てしまう.
レスポンスのデータは以下のような感じです

{ data: [ {hoge: "hoge", huga: "huga"}, {hoge: "foo", huga: "foo"}, ] }

試したこと

  • console.log(typeof(result.data))をするとArrayとでます
  • Objectをstringに変換してuseStateの初期値を""にするとちゃんと格納されることは確認したのですが、そのままObjectとして格納するとエラーになります。

よろしくお願いします.

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

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

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

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

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

guest

回答1

0

ベストアンサー

Error: Objects are not valid as a React child (found: object with keys []). If you meant to render a collection of children, use an array instead.

このエラーはオブジェクトをrenderしようとして発生していると思うので、ソース中のreturn内で省略されている箇所の書き方が違うのだと思います。
※推測ですが直接{data}のように書いている?

dataは配列という前提のもとで話を進めますが、例えば以下のようにすれば表示されませんか?

js

1data?.map((d, index) => { 2 return ( 3 <p key={`data_${index}`}>{d?.hoge}</p> 4 ); 5})

投稿2021/04/14 07:41

nekoniki

総合スコア2411

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

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

butsuli_shine

2021/04/14 07:49

配列をそのまま書いていました そちらの書き方で表示をしたら動きました. 自分が思っていたところと全く別のところが問題だったのですね... まだまだ未熟だと痛感しました ありがとうございました
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問