Formu gönderirken, 'Please wait ..' yazısını ve başarılı bir şekilde sunucudan dönen verileri göstermek istiyorum. JQuery kullanarak, bunu yapmak kolaydır. Ancak React'ın böyle bir doğrudan DOM manipülasyonunu sevmediği gibi bir tepki yolu olmalı - sanırım. 1) Doğru muyum? 2) İleti form gönderiminde (sonra değil) nasıl gösterilir?react.js - form gönderiminde ve sonrasında bir mesaj göster
var FormComp = React.createClass({
handleSubmit:function(){
var userName=this.refs.userName.getDOMNode().value.trim();
var userEmail= this.refs.userEmail.getDOMNode().value.trim();
if(!userName || !userEmail){
return;
}
this.props.onFormSubmit({userName:userName, userEmail:userEmail,url:"/api/submit"});
this.refs.userName.getDOMNode().value='';
this.refs.userEmail.getDOMNode().value='';
return;
},
render: function() {
var result=this.props.data;
return (
<div className={result}>{result.message}</div>
<form className="formElem" onSubmit={this.handleSubmit}>
Name: <input type="text" className="userName" name="userName" ref="userName" /><br/>
Email: <input type="text" className="userEmail" name="userEmail" ref="userEmail" /><br/>
<input type="submit" value="Submit" />
<form >
</div>
);
}
});
var RC= React.createClass({
getInitialState: function() {
return {data: ""};
},
onFormSubmit:function(data){
$.ajax({
url: this.props.url,
dataType: 'json',
type: 'POST',
data: data,
success: function(data) {
this.setState({data: data});
}.bind(this),
error: function(xhr, status, err) {
console.error(this.props.url, status, err.toString());
}.bind(this)
});
},
render:function(){
return <FormComp onFormSubmit={this.onFormSubmit} data={this.state.data}/>
}
});
React.render(
<RC/>,
document.getElementById('content')
);
başka bir göz olabilir soru burada React - http://stackoverflow.com/questions/27913004/react-js-render-a bileşen-dıştan-tepki? –
, 'userName' ve' userEmail' içinde 'handleSubmit' içinde' state' yerine 'refs'den hesaplanmamalıdır? –
Oops, üzgünüm. Giriş değişikliklerini hallettim, bu yüzden durum her zaman güncel. Ben dom elemanlarını depolamak yerine, bu durumu kasıtlı olarak saklamanın daha iyi olduğunu düşünüyorum. İşlerin nasıl değiştiğini değiştirmeye karar verirseniz size daha fazla seçenek sunar. – Shawn