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

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

新規登録して質問してみよう
ただいま回答率
85.49%
ECMAScript

ECMAScriptとは、JavaScript類の標準を定めるために作られたスクリプト言語です。

JavaScript

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

TypeScript

TypeScriptは、マイクロソフトによって開発された フリーでオープンソースのプログラミング言語です。 TypeScriptは、JavaScriptの構文の拡張であるので、既存の JavaScriptのコードにわずかな修正を加えれば動作します。

React.js

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

Q&A

解決済

1回答

6123閲覧

react兄弟間のデータの受け渡し

mrr

総合スコア36

ECMAScript

ECMAScriptとは、JavaScript類の標準を定めるために作られたスクリプト言語です。

JavaScript

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

TypeScript

TypeScriptは、マイクロソフトによって開発された フリーでオープンソースのプログラミング言語です。 TypeScriptは、JavaScriptの構文の拡張であるので、既存の JavaScriptのコードにわずかな修正を加えれば動作します。

React.js

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

0グッド

0クリップ

投稿2018/08/31 01:02

前提・実現したいこと

親コンポーネント<Parent >から子のコンポーネント<ChildeOne ><ChildeTwo >
レンダリングしています。
<ChildeOne>のデータを<ChildeTwo>に渡したいです。

<Parent ><ChildeOne >
では、文字と関数を渡しています

javascript

1// <Parent > 2 return ( 3 <ChileOne value={i} 4 onClick={() => this.handleClick(i)} 5 />);

javascript

1// <ChildeOne > 2export default function ChileOne(props) { 3 return ( 4 <button onClick={props.onClick}> 5 {props.value} 6 </button> 7 ); 8}

<Parent ><ChileTwo >
で、ChildeOneのデータを表示したいのですがうまくいきません

javascript

1// <Parent > 2 handleClick(i) { 3 console.log(i) 4 return <ChildeTwo value={i} />; 5 }

javascript

1// <ChildeTwo > 2export default class ChildeTwo extends React.Component { 3 constructor(props) { 4 super(props); 5 this.state = { 6 output: "", 7 }; 8 } 9 render() { 10 return ( 11 <div> 12 <div>{this.state.output}</div> 13 </div> 14 ); 15 } 16}

handleClick()内では期待している値が取得できているので
ChildeTwoで受け取れてないのだと思うのですがいまいちわかりません。

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

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

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

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

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

guest

回答1

0

ベストアンサー

ParentのhandleClicke(i)内ではなく、render()の中で、ChildeTwoを定義する必要があります。

どのChileOneがクリックされたかをChildeTwoに表示しようとしているのであれば、
Parentに、clickedNumberのようなStateを追加して、handleClick(i)で、setStateすることで、表示されるようになると思います。

// <Parent > constructor(props) { super(props); this.state = { clickedNumber: 0, }; } handleClick(i) { console.log(i) this.setState({clickedNumber: i}); } return ( <ChileOne value={i} onClick={() => this.handleClick(i)} /> <ChildeTwo value={this.state.clickedNumber} /> ); // <ChildeTwo > export default class ChildeTwo extends React.Component { constructor(props) { super(props); this.state = { output: "", }; } render() { return ( <div> <div>{this.state.output}</div> <div>{this.props.value}</div> //ParentでセットされたValueを表示 </div> ); } }

投稿2018/08/31 01:36

Meganezaru

総合スコア715

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

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

mrr

2018/08/31 03:53

回答ありがとうございます。データ受け渡しのイメージが湧きました! 現在、頂いた回答でいうところの clickedNumber: 0 の部分が clickedNumber1 :["0","1","2"], clickedNumber2 :["3","4","5"], clickedNumber3 :["6","7","8"], になっているのですが その場合、 handleClick(i) { console.log(i) this.setState({clickedNumber: i}); } どのようにsetStateすればいいのでしょうか? 続けて質問申し訳ありません。
Meganezaru

2018/08/31 04:15

clickedNumber1,2,3はすでにある、Stateということですか? すでにあるものではなく、新しく追加していただければ、影響なく動作すると思います。 3つのコンポーネントのソースをもれなく乗せてもらえば、判断できるのですが・・・
mrr

2018/08/31 04:23

おっしゃる通りで clickedNumber1,2,3はすでにあるstateです 既にあるstateを子1のボタンに渡して、ボタンをクリックすると子2に表示したいです。 電卓のようなものを作成しています。
Meganezaru

2018/08/31 04:31

今掲載されているソースにその部分がないので、判断できないのです(^_^;) clickedNumber1,2,3は、現状何に利用されているのですか?
mrr

2018/08/31 04:39

return ( <ChileOne value={i} onClick={() => this.handleClick(i)} />); ここで子1にvalueとして渡して子1のボタンで表示させています。
Meganezaru

2018/08/31 05:00

clickedNumber1,2,3は、<ChlieOne />の表示に利用されているStateですよね? <ChildeTwo />の表示で利用するために別のState(回答でのclikedNumber)を準備し、<ChileOne />クリック時にclickedNumberを更新するというのが、私の回答です。 <ChildeTwo />と、元からあったclickedNumber1,2,3は何も関係しません。 clickedNumber1,2,3と、<ChileOne />に渡しているiは、どういう関係がありますか?
mrr

2018/08/31 05:13

>> <ChildeTwo />の表示で利用するために別のState(回答でのclikedNumber)を準備し、<ChileOne >> />クリック時にclickedNumberを更新するというのが、私の回答です。 >> >> <ChildeTwo />と、元からあったclickedNumber1,2,3は何も関係しません。 ここで、やっと理解できました! お手数おかけして申し訳ありません。 ありがとうございます。助かりました。
Meganezaru

2018/08/31 05:37

いえいえ、伝わってよかったです( ^ω^ ) おつかれさまでした!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.49%

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

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

質問する

関連した質問