Reactでセレクトボックスの選択された値によって配列を出し分けしたいです。
やりたいこと
1.セレクトボックスの任意のものを選択
2.選択したらボタンを押下
3.セレクトボックスで選択した値に対応した配列をループして画面に表示する
配列はarray1
とarray2
の2種類あります。
セレクトボックスのvalue値にもarray1
とarray2
があり、
選択された方がthis.state.arrayName
にsetState
され、
ボタンを押下したらvalue
と同じ名前の配列をmap
でループして表示させたいです。
現状
- セレクトされた
value
をarrayName
にセットするとこまではできています。
(選択されたvalue
の値がconsole
に表示されます)
{array1.map((hoge) =>
表示されっぱなしですがarray1
の内容が表示されます。
array2
にすれば内容が変わります。
(array1
← ここが切り替えられればよいのですが、、、
{this.state.arrayName.map((hoge) =>
ではだめでした爆)
ソース
import React, { Component } from 'react' import ReactDOM from 'react-dom' const array1 = [ { name: 'aaa' }, { name: 'bbb' } ] const array2 = [ { name: 'ccc' }, { name: 'ddd' } ] class App extends Component { constructor(props) { super(props) this.state = { arrayName: "array1" } } onChangeSelectBox(event) { this.setState({ arrayName: event.target.value }) } onClickButton() { console.log(this.state.arrayName) } render() { return( <div> <select onChange={(event) => this.onChangeSelectBox(event)}> <option value="array1">array1</option> <option value="array2">array2</option> </select> <button onClick={() => this.onClickButton()}>セレクト</button> <div> {array1.map((hoge) => <Loop hoge={hoge} key={hoge.name} /> )} </div> </div> ) } } const Loop = (props) => { return( <p>{props.hoge.name}</p> ) } ReactDOM.render( <App />, document.getElementById('root') )
他によい書き方などがあれば教えていただけると幸いです。
どうぞよろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/03/19 10:21
2018/03/19 10:31