6
フォームを送信する際に、「しばらくお待ちください」を表示し、サーバーから返されたデータを正常に提出したいとします。 jQueryを使用すると、簡単に実行できます。しかし、Reactはそのような種類の直接的なDOM操作が気に入らないので、リアクション方法が必要です。 1)私は正しいですか? 2)フォーム提出時にメッセージを表示するにはどうすればいいですか?react.js - フォーム提出の前後にメッセージを表示
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')
);
あなたは別のを見てすることができますが、質問はここに反応する - http://stackoverflow.com/questions/27913004/react-js-render-a成分から外に反応するか? –
'handleSubmit'内の' userName'と 'userEmail'は' state'ではなく 'refs'から計算すべきですか? –
申し訳ありません。入力の変更を処理するのを忘れたので、状態は常に最新です。 dom要素に格納するのではなく、意図的にその状態を格納するほうがよいことがわかります。どのように動作するかを変更する場合は、さらに多くのオプションがあります。 – Shawn