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

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

新規登録して質問してみよう
ただいま回答率
85.48%
データバインディング

データソースと、アプリケーションやウェブページ(ウェブアプリケーション)のユーザインタフェースを静的または動的に結合する技術です。

React.js

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

Q&A

解決済

1回答

533閲覧

React: 親コンポーネントから子コンポーネントにデータを渡したい

_dana

総合スコア15

データバインディング

データソースと、アプリケーションやウェブページ(ウェブアプリケーション)のユーザインタフェースを静的または動的に結合する技術です。

React.js

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

0グッド

0クリップ

投稿2021/04/27 11:39

Reactで親コンポーネントから子コンポーネントに値を渡したいのですが、なかなかうまくできません。

両コンポーネントともClassコンポーネントなのですが、propsを使って受け渡しをしようとすると、子コンポーネントで this.props を呼び出すとpropsが空になってしまいます。
functional componentにする方向ではあまり考えていません。

解決法もしくはよりよい方法があればご教示いただけると幸いです。

console

1{} /* console.log(this.props.value)の結果 */

js

1//親コンポーネント 2export default class Parent extends React.Component { 3 constructor(props) { 4 super(props) 5 this.state = { 6 value: 'aaa' 7 } 8 } 9 ... 10 render() { 11 return ( 12 <Child parentState={this.state.value} /> 13 ) 14 } 15}

js

1// 子コンポーネント 2export default class Child extends React.Component { 3 constructor(props) { 4 super(props) 5 ... 6 } 7 ... 8 render() { 9 console.log(this.props.value} 10 } 11}

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

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

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

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

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

hoshi-takanori

2021/04/27 12:47

前回の質問もですが、いろいろ省略しすぎなのが気になります。少なくとも Child の render() は何か返すべきでは。
guest

回答1

0

ベストアンサー

Child コンポーネントの props は、

html

1<Child parentState={this.state.value} />

と書かれているので、

{ parentState: (ParentコンポーネントのStateの value) }

という形式になっていると思います。

なので、Child コンポーネントの props から value を読み出すことはできません。
this.props.value の 代わりに this.props.parentState と書けるでしょう。

投稿2021/04/27 11:47

編集2021/04/27 12:59
coolwind0202

総合スコア708

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

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

hoshi-takanori

2021/04/27 12:46

横から失礼します。this.state.parentState じゃなくて this.props.parentState ですよね。
coolwind0202

2021/04/27 12:59

ありがとうございます。修正しました
_dana

2021/04/28 05:53

以上の記述で試しましたがコンソールにはundefinedが出力されます。
coolwind0202

2021/04/28 08:32

① Child コンポーネントの render() で任意の値を返すように変更してください (return null でも構いません)。 ② Child コンポーネント と Parent コンポーネントはそれぞれ別の .js ファイルに記述していますか?
_dana

2021/04/29 01:05

別のファイルに記述しています。
coolwind0202

2021/04/29 01:31

こちらの環境では動作が確認できたので、質問文で省略されている部分などに原因があるかもしれません。 Childコンポーネントの render() の console.log() のカッコが閉じられていないのが気になるので、もう一度いまのコードを正しく質問文にコピーペーストしてください。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問