2017-05-29 15 views
1

私はreact-geosuggestを使用していますが、何らかの理由で入力フィールドGeosuggestの値が収集されません。 Geosuggest入力フィールドには、入力フィールドにname=が含まれています。他の入力フィールドと同じように、値は常に空に戻ります。助言がありますか。反応geosuggest入力フィールドの入力値を取得

export default class ContactDetails extends React.Component { 
    constructor(props) { 
    super(props); 
    this.state = { 
     'name.first': '', 
     'address.fullAddress': '', 
    }; 

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

    handleInputChange(event) { 
    const target = event.target; 
    const value = target.type === 'checkbox' ? target.checked : target.value; 
    const name = target.name; 

    this.setState({ 
     [name]: value 
    }); 
    } 

    handleSubmit(event) { 
    event.preventDefault(); 

    var data = { 
     'name.first': this.state['name.first'], 
     'address.fullAddress': this.state['address.fullAddress'], 
    }; 

    console.log("data: ", data); 

    } 

    render() { 
    return (
     <form onSubmit={this.handleSubmit} noValidate> 
     <Geosuggest 
      name="address.fullAddress" 
      placeholder="Full address" 
      value={this.state['address.fullAddress']} 
      onChange={this.handleInputChange} 
      initialValue={this.state['address.fullAddress']} 
      location={new google.maps.LatLng(25.2744, 133.7751)} 
      radius="0" 
     /> 

     <input 
      name="name.first" 
      type="text" 
      value={this.state['name.first']} 
      onChange={this.handleInputChange} 
      className={this.state.errors['name.first'] ? "validate invalid" : "validate" } 
     /> 

     <button className="btn waves-effect waves-light" type="submit" name="action"> 
      Save 
     </button> 
     </form> 
    ) 
    } 
} 

答えて

1

react-geosuggest成分は、入力の値ではなく、そのイベントオブジェクトとのonChangeハンドラを呼び出します。

handleGeosuggestChange(value) { 
    this.setState({ 'address.fullAddress': value }); 
} 

、代わりのコンポーネントでそれを使用します:

<Geosuggest 
    ... 
    onChange={this.handleGeosuggestChange} 
    ... 
/> 
+0

を[OK]を、今私は、しかし、で入力された値を取得していますしたがって、私はあなたがこのようなことのために別のハンドラを作成お勧めします選択されていない。同様に、 '100 Sample Street'を探して' 100 S 'と入力し、Googleの提案である '100 Sample Street'を選択すると、記録される値は' 100 S'になります。ありがとう。 – bp123

+0

ありがとう。解決策は次のようなものでした: 'onSuggestSelect(suggest){ console.log(" suggest: "、suggest); // eslint-disable-line this.setState({'address.fullAddress':suggest.label}) } ' – bp123

関連する問題