2015-02-25 14 views
11
(aşağıya bakınız) Tepki kullanıyorum ve bir formdan POST params almak istiyorum

: _onSubmitClick Geri arama durumundaTepki - formda olsun göndermek POST parametreler

<form ref='form' className="form"> 
    <input type="text" className="signup-input" /> 
    <input type="text" className="signup-input" /> 
    <button className="btn btn-primary" onClick={this._onSubmitClick}>Submit</button> 
</form> 

, ben aynı başarmak istiyoruz $(".form").serialize() numaralı telefonu aramadan JQuery kullanmadan sonuçlanır.

+1

Bir göz atmayı denediniz mi? jQuery kaynağında sahnelerin arkasında ne olduğunu görmek için? –

cevap

11
var elements = this.refs.form.getDOMNode().elements; 

size sonra üzerinden yineleme input düğümlerin her biri içeren bir nesne sağlamaktadır.

<form ref='form' className="form"> 
    <input type="text" ref="firstName" className="signup-input" /> 
    <input type="text" ref="lastName" className="signup-input" /> 
    <button className="btn btn-primary" onClick={this._onSubmitClick}>Submit</button> 
</form> 

Sonra _onSubmitClick bunları erişmek için React.findDOMNode kullanmak: Her input üzerinde ref yerleştirebilirsiniz

+2

'getDomNode', kullanımdan kaldırıldı. Bunun yerine: 'import {findDOMNode} 'react-dom'; var elements = findDOMNode (this.refs.form) .elements; ' – zhirzh

+2

' FormData', https://developer.mozilla.org/en-US/docs/Web/API/FormData/FormData. – Hozefa

+0

npm modülü ['form-serialize'] (https://github.com/defunctzombie/form-serialize) bir göz atmaya değer. Bir projede kullandım ve benim için iyi çalıştı. – Hozefa

2

_onSubmitClick: function() { 
    var firstName = React.findDOMNode(this.refs.firstName).getValue(); 
    var lastName = React.findDOMNode(this.refs.lastName).getValue(); 
    // ... 
} 
+0

Giriş öğelerim bir alt bileşen içeriyorsa bunu nasıl yaparım? – trueunlessfalse

6

i birileri bu seveceksiniz düşünüyorum cevap ilaveten;)

export default class LoginView extends React.Component { 
    handleSubmit(evt) { 
     const formData = Array.from(evt.target.elements) 
      .filter(el => el.name) 
      .reduce((a, b) => ({...a, [b.name]: b.value}), {}); 
     console.log(formData); 
     evt.preventDefault(); 
     return false; 
    } 

    render() { 
     return (<form onSubmit={this.handleSubmit}>...</form>) 
    } 
}