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

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

新規登録して質問してみよう
ただいま回答率
85.48%
Material-UI

Material-UIは、Material Designを利用可能なオープンソースのReact向けUIコンポーネントキットです。

Webサイト

一つのドメイン上に存在するWebページの集合体をWebサイトと呼びます。

JavaScript

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

React.js

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

Q&A

解決済

1回答

3002閲覧

React コンポーネントが二回読み込まれている?実行される。

Yusuke_m25

総合スコア74

Material-UI

Material-UIは、Material Designを利用可能なオープンソースのReact向けUIコンポーネントキットです。

Webサイト

一つのドメイン上に存在するWebページの集合体をWebサイトと呼びます。

JavaScript

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

React.js

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

0グッド

0クリップ

投稿2020/04/10 01:37

いつもお世話になっております。
現在、reactjsとMaterialUIを習得中で、試しにポートフォリオ的なものを作ろうとしているところです。

困りごとがあり、その原因を探っていたところ、
<Contents />コンポーネントを二回呼び出しているのか、<Contents/>コンポーネントの中のコンソールログが2度表示される事が発覚しました。

こちらがコードです。
https://codesandbox.io/s/beautiful-moore-3l8v9?file=/src/App.js

<Contents/>の中身をほぼからにして、コンソールログと、return <duv>test</div>だけにするとその症状は無くなります。

そもそもは、<Card />で再現されている一覧のどれかをクリックした時に、そのimgパスを<Modal>に渡して、モーダルで表示したかったのですが、親方向に子コンポーネントから値を渡すのに苦戦していました。
そんなこんなしているうちに、<Contents/>が2度読み込まれていることに気づき、わけもわからず3時間費やしたところです...

また、長い期間勉強をしながら作っていたので、クラスコンポーネントを使ったり、フックを使ったりと、一貫性のない作りになっていて、もしかするとそれが原因なのかもしれません。
見辛くてごめんなさい。そういった部分も含めまして、、
ご助言いただけますと大変幸いです。
何卒よろしくお願いいたします。

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

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

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

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

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

guest

回答1

0

ベストアンサー

<Contents/>コンポーネントの中のコンソールログが2度表示される事が発覚しました。

そういうものです。関数コンポーネントの関数は、何度実行されるかわかりません

確実に特定のタイミング・回数で実行したいものは、useEffrectの中に書くなどして制御してください。

投稿2020/04/10 01:56

maisumakun

総合スコア145183

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

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

maisumakun

2020/04/10 01:57 編集

関数コンポーネントの直下に、「2回呼ばれて困る」ようなコードを書いてはいけません。
Yusuke_m25

2020/04/10 03:16

なるほど。今回の場合で言うとなぜ<Contents />コンポーネントだけ2度実行されたのかわかりますか? それとも、”なぜ”は気にしないでいいのでしょうか? <Contents/>コンポーネントが決まって2回実行されていたので何かしらの原因があると思ったのですが... なんにせよ、元々困っていた子コンポーネントから親のステートを変えるって言うのもいつの間にかできていたのでベストアンサーにさせて頂きます。もしお時間ございましたら上記の疑問にもお答えいただけますと幸いです!
maisumakun

2020/04/10 03:52

> それとも、”なぜ”は気にしないでいいのでしょうか? はい、逆に原因がわかったからといって、(Reactを使う立場では)特にすることもありませんし。
Yusuke_m25

2020/04/10 04:57

ご回答ありがとうございます!!! 承知しました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問