🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
React.js

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

Q&A

解決済

1回答

1971閲覧

reactでリロードした時、画面に正しい件数を表示したい。

hello_space

総合スコア24

React.js

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

0グッド

0クリップ

投稿2021/01/08 08:17

reactでaxiosを使いデータを取得し、そのデータをfilterにかけ、結果の件数を表示しています。

import React, { useEffect, useState } from 'react' export default function getData() { const [datas, setDatas] = useState() useEffect(() => { axios.get('/***').then(data => setDatas(data)) }, []) const filteredDatas = datas.filter(row => row.data < 1) return( <div> {`データの件数は${filterdDatas.length}件です`} </div> ) }

このようにすると初めはデータが入らず画面に"データの件数は0件です"と一瞬出力され、その後正しい件数が表示されます。
この最初のデータの件数は0件ですというのを表示させず、初めから正しい値を表示するにはどのようにしたらよろしいでしょうか?
よろしくお願いいたします。

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

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

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

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

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

hoshi-takanori

2021/01/08 08:22

axios.get は非同期なので、最初はデータが存在しません。datas が undefined なら何も表示しなければいいのでは。
hello_space

2021/01/08 09:03

ありがとうございます!おっしゃっていただいた方法での実装を考えます。
guest

回答1

0

ベストアンサー

初めから正しい値を表示するにはどのようにしたらよろしいでしょうか?

無理です。axiosによるデータ取得は非同期的ですので、コンポーネントの表示から値が取れるまでにはどうしても時間が発生します。

(なお、「ロード中…」のような表示で場をつなぐ、あるいはデータが取れるまでは非表示にしておく、という選択肢はあります)

投稿2021/01/08 08:20

maisumakun

総合スコア145973

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

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

hello_space

2021/01/08 09:04

ありがとうございます。できないことがわかり、すっきりしました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問