ReactJS - 表單



本章我們將學習如何在 React 中使用表單。

簡單示例

在下面的示例中,我們將設定一個輸入表單,其中 value = {this.state.data}。這允許在輸入值更改時更新狀態。我們使用onChange 事件來監視輸入更改並相應地更新狀態。

App.jsx

import React from 'react';

class App extends React.Component {
   constructor(props) {
      super(props);
      
      this.state = {
         data: 'Initial data...'
      }
      this.updateState = this.updateState.bind(this);
   };
   updateState(e) {
      this.setState({data: e.target.value});
   }
   render() {
      return (
         <div>
            <input type = "text" value = {this.state.data} 
               onChange = {this.updateState} />
            <h4>{this.state.data}</h4>
         </div>
      );
   }
}
export default App;

main.js

import React from 'react';
import ReactDOM from 'react-dom';
import App from './App.jsx';

ReactDOM.render(<App/>, document.getElementById('app'));

當輸入文字值更改時,狀態將被更新。

React Forms Simple

複雜示例

在下面的示例中,我們將看到如何從子元件使用表單。onChange 方法將觸發狀態更新,該更新將傳遞給子輸入value並在螢幕上呈現。事件章節中使用了類似的示例。每當我們需要從子元件更新狀態時,都需要將處理更新的函式 (updateState) 作為 prop (updateStateProp) 傳遞。

App.jsx

import React from 'react';

class App extends React.Component {
   constructor(props) {
      super(props);
      
      this.state = {
         data: 'Initial data...'
      }
      this.updateState = this.updateState.bind(this);
   };
   updateState(e) {
      this.setState({data: e.target.value});
   }
   render() {
      return (
         <div>
            <Content myDataProp = {this.state.data} 
               updateStateProp = {this.updateState}></Content>
         </div>
      );
   }
}
class Content extends React.Component {
   render() {
      return (
         <div>
            <input type = "text" value = {this.props.myDataProp} 
               onChange = {this.props.updateStateProp} />
            <h3>{this.props.myDataProp}</h3>
         </div>
      );
   }
}
export default App;

main.js

import React from 'react';
import ReactDOM from 'react-dom';
import App from './App.jsx';

ReactDOM.render(<App/>, document.getElementById('app'));

這將產生以下結果。

React Forms Complex
reactjs_form.htm
廣告
© . All rights reserved.