Bertindak balas bentuk dan peristiwa
Dalam bab ini kita akan membincangkan cara menggunakan borang dalam React.
Contoh mudah ialah
Dalam contoh kami menetapkan nilai input kotak input nilai = {this.state.data}. Kita boleh mengemas kini keadaan apabila nilai kotak input berubah. Kita boleh menggunakan acara onChange untuk mendengar perubahan input dan mengubah suai keadaan.
Instance
<!DOCTYPE html> <html> <head> <meta charset="UTF-8" /> <title>php中文网 React 实例</title> <script src="http://static.php.cn/assets/react/react-0.14.7/build/react.min.js"></script> <script src="http://static.php.cn/assets/react/react-0.14.7/build/react-dom.min.js"></script> <script src="http://static.php.cn/assets/react/browser.min.js"></script> </head> <body> <div id="example"></div> <script type="text/babel"> var HelloMessage = React.createClass({ getInitialState: function() { return {value: 'Hello php!'}; }, handleChange: function(event) { this.setState({value: event.target.value}); }, render: function() { var value = this.state.value; return <div> <input type="text" value={value} onChange={this.handleChange} /> <h4>{value}</h4> </div>; } }); ReactDOM.render( <HelloMessage />, document.getElementById('example') ); </script> </body> </html>
Run Instance»
Klik butang "Run Instance" untuk melihat contoh dalam talian
Kod di atas akan memaparkan elemen input dengan nilai Hello php dan mengemas kini nilai yang dimasukkan oleh pengguna melalui respons acara onChange.
Contoh 2
Dalam contoh berikut, kami akan menunjukkan cara menggunakan borang pada komponen kanak-kanak. Kaedah onChange akan mencetuskan kemas kini keadaan dan menghantar nilai yang dikemas kini kepada nilai kotak input komponen anak untuk memaparkan semula antara muka.
Anda perlu mencipta pengendali acara (handleChange) dalam komponen induk dan hantarkannya kepada komponen anak anda sebagai prop (updateStateProp).
Instance
<!DOCTYPE html> <html> <head> <meta charset="UTF-8" /> <title>php中文网 React 实例</title> <script src="http://static.php.cn/assets/react/react-0.14.7/build/react.min.js"></script> <script src="http://static.php.cn/assets/react/react-0.14.7/build/react-dom.min.js"></script> <script src="http://static.php.cn/assets/react/browser.min.js"></script> </head> <body> <div id="example"></div> <script type="text/babel"> var Content = React.createClass({ render: function() { return <div> <input type="text" value={this.props.myDataProp} onChange={this.props.updateStateProp} /> <h4>{this.props.myDataProp}</h4> </div>; } }); var HelloMessage = React.createClass({ getInitialState: function() { return {value: 'Hello php!'}; }, handleChange: function(event) { this.setState({value: event.target.value}); }, render: function() { var value = this.state.value; return <div> <Content myDataProp = {value} updateStateProp = {this.handleChange}></Content> </div>; } }); ReactDOM.render( <HelloMessage />, document.getElementById('example') ); </script> </body> </html>
Run Instance»
Klik butang "Run Instance" untuk melihat contoh dalam talian
Acara bertindak balas
Contoh berikut menunjukkan pengubahsuaian data melalui acara onClick:
Instance
<!DOCTYPE html> <html> <head> <meta charset="UTF-8" /> <title>php中文网 React 实例</title> <script src="http://static.php.cn/assets/react/react-0.14.7/build/react.min.js"></script> <script src="http://static.php.cn/assets/react/react-0.14.7/build/react-dom.min.js"></script> <script src="http://static.php.cn/assets/react/browser.min.js"></script> </head> <body> <div id="example"></div> <script type="text/babel"> var HelloMessage = React.createClass({ getInitialState: function() { return {value: 'Hello php!'}; }, handleChange: function(event) { this.setState({value: 'php中文网'}) }, render: function() { var value = this.state.value; return <div> <button onClick={this.handleChange}>点我</button> <h4>{value}</h4> </div>; } }); ReactDOM.render( <HelloMessage />, document.getElementById('example') ); </script> </body> </html>
Jalankan Instance»
Klik butang "Run Instance" untuk melihat contoh dalam talian
Apabila anda perlu mengemas kini keadaan komponen induk daripada komponen anak, anda perlu Komponen induk mencipta pengendali acara (handleChange) dan menyerahkannya kepada komponen anak anda sebagai prop (updateStateProp). Contohnya adalah seperti berikut:
Instance
<!DOCTYPE html> <html> <head> <meta charset="UTF-8" /> <title>php中文网 React 实例</title> <script src="http://static.php.cn/assets/react/react-0.14.7/build/react.min.js"></script> <script src="http://static.php.cn/assets/react/react-0.14.7/build/react-dom.min.js"></script> <script src="http://static.php.cn/assets/react/browser.min.js"></script> </head> <body> <div id="example"></div> <script type="text/babel"> var Content = React.createClass({ render: function() { return <div> <button onClick = {this.props.updateStateProp}>点我</button> <h4>{this.props.myDataProp}</h4> </div> } }); var HelloMessage = React.createClass({ getInitialState: function() { return {value: 'Hello php!'}; }, handleChange: function(event) { this.setState({value: 'php中文网'}) }, render: function() { var value = this.state.value; return <div> <Content myDataProp = {value} updateStateProp = {this.handleChange}></Content> </div>; } }); ReactDOM.render( <HelloMessage />, document.getElementById('example') ); </script> </body> </html>
Run Instance»
Klik butang "Run Instance" untuk melihat contoh dalam talian