Tôi gặp sự cố này khi xây dựng một ứng dụng web và tôi đã sao chép nó trong số jsfiddle này. Về cơ bản, tôi muốn một đầu vào để gọi this.setState({message: input_val})
mỗi khi tôi nhập một cái gì đó vào nó, sau đó vượt qua nó vào lớp App cha sau đó lại ám thông điệp vào lớp Message. Tuy nhiên đầu ra dường như luôn luôn là một bước phía sau những gì tôi thực sự gõ. Bản demo jsfiddle nên tự giải thích. Tôi tự hỏi nếu tôi đã làm bất cứ điều gì sai để nhắc điều này.Biểu mẫu phản hồi onChange-> setState một bước sau
html
<script src="http://facebook.github.io/react/js/jsfiddle-integration.js"></script>
<div id='app'></div>
js
var App = React.createClass({
getInitialState: function() {
return {message: ''}
},
appHandleSubmit: function(state) {
this.setState({message: state.message});
console.log(this.state.message);
},
render: function() {
return (
<div className='myApp'>
<MyForm onChange={this.appHandleSubmit}/>
<Message message={this.state.message}/>
</div>
);
}
});
var MyForm = React.createClass({
handleSubmit: function() {
this.props.onChange(this.state);
},
handleChange: function(e) {
console.log(e.target.value);
this.setState({message: e.target.value});
this.handleSubmit();
},
render: function() {
return (
<form className="reactForm" onChange={this.handleChange}>
<input type='text' />
</form>
);
}
});
var Message = React.createClass({
render: function() {
return (
<div className="message">
<p>{this.props.message}</p>
</div>
)
}
});
React.render(
<App />,
document.getElementById('app')
);
bạn thưa ông xứng đáng danh tiếng 41K của bạn! –