2017-12-10 9 views
-2

私は内部にフォームを持つ反応容器を持っています。フォームには3つのラジオボタンが含まれています。各ラジオボタン入力の各値を、私のレデューサーのオブジェクトの配列から取得したオブジェクトにしたいと思います。私はラジオボタン入力の値をCONSOLE.LOGしかし、私はこれを取得:なぜオブジェクトの代わりに[オブジェクトオブジェクト]を取得していますか

[オブジェクトのオブジェクト]私は[オブジェクトのオブジェクト]がオブジェクトのデフォルトのtoString表現であることを知っている

私はそれの中の情報を使用することができるように私は実際のオブジェクトをつかむことができますか?ここ

は私のコードです:

class NoteInput extends React.Component { 
    constructor(props) { 
     super(props); 

     this.state={ 
      selectedValue: null, 
     } 

    this.handleChange = this.handleChange.bind(this); 
    this.handleSubmit = this.handleSubmit.bind(this); 
    } 

    handleChange(e) { 
     this.setState({selectedValue: e.target.value}) 
    } 

    handleSubmit(e) { 
     e.preventDefault(); 
     console.log(this.state.selectedValue); 
    } 

    render() { 
     var inputs = this.props.locations.map((location, i) => { 
      return (
       <div key={i}> 
        <input type="radio" id={i} name="location" value={location} /> 
        <label htmlFor={'choice' + {i}}>{location.name}</label> 
       </div> 
      ); 
     }); 
     return (
      <div> 
       <form onSubmit={this.handleSubmit} onChange={this.handleChange} > 
        {inputs} 
        <input type="submit" value="Submit" /> 
       </form> 
      </div> 
     ); 
    } 
} 

、ここでは私の減速である:

export default function() { 
    return [ 
     {name: 'Safa Park', locationLat: '25.184992', locationLong: '55.248140'}, 
     {name: 'Mercato', locationLat: '25.217054', locationLong: '55.253051'}, 
     {name: 'Burj Khalifa', locationLat: '25.197787', locationLong: '55.274862'} 
    ] 
} 
+0

オブジェクトは、入力フィールドの値として使用することができません。オブジェクトを識別する文字列(名前、配列内のインデックスなど)を選択する必要があります – JJJ

+0

[JavaScriptオブジェクトの内容を印刷しますか?](https://stackoverflow.com/questions/1625208/print-コンテンツのjavascriptオブジェクト) –

答えて

0

あなたはradio buttonの値としてstringify形式にlocationオブジェクトを格納することができます。

var inputs = this.props.locations.map((location, i) => { 
     let strLoc = JSON.stringify(location); // stringify it 
     return (
     <div key={i}> 
      <input type="radio" id={i} name="location" value={strLoc} /> 
      <label htmlFor={'choice' + { i }}>{location.name}</label> 
     </div> 
    ); 
    }); 

handleSubmitでは、json/object形式で戻ることができます。

handleSubmit(e) { 
    e.preventDefault(); 
    let strLoc = JSON.parse(this.state.selectedValue); //parse it back to json/object 
    console.log(strLoc.name); 
    } 

作業codesandbox demo

+0

ありがとう、それは働いて、私は今ログをコンソール:) – user74843

関連する問題