Khi gửi biểu mẫu, tôi muốn hiển thị 'Vui lòng đợi ..' và gửi thành công dữ liệu được trả về từ máy chủ. Sử dụng jQuery, nó rất dễ làm. Nhưng có một cách phản ứng như React không thích loại thao tác DOM trực tiếp như vậy - tôi nghĩ vậy. 1) Tôi có đúng không? 2) Làm cách nào để hiển thị thông báo trên biểu mẫu (không sau) gửi biểu mẫu?react.js - hiển thị thông báo vào và sau khi gửi biểu mẫu
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')
);
bạn có thể xem thêm câu hỏi Phản hồi tại đây - http://stackoverflow.com/questions/27913004/react-js-render-a -component-from-outside-react? –
không nên sử dụng 'userName' và' userEmail' bên trong 'handleSubmit' từ' refs' thay vì 'state'? –
Rất tiếc, xin lỗi. Quên để xử lý các thay đổi đầu vào, vì vậy trạng thái luôn được cập nhật. Tôi tìm thấy nó tốt hơn để cố tình lưu trữ trạng thái đó, thay vì lưu trữ trong các yếu tố dom. Cung cấp cho bạn nhiều tùy chọn hơn nếu bạn quyết định thay đổi cách hoạt động của mọi thứ. – Shawn