日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

受控组件和不受控组件的区别

發布時間:2025/7/25 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 受控组件和不受控组件的区别 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

受控組件

在HTML中,標簽<input>、<textarea>、<select>的值的改變通常是根據用戶輸入進行更新。在React中,可變狀態通常保存在組件的狀態屬性中,并且只能使用?setState()?更新,而呈現表單的React組件也控制著在后續用戶輸入時該表單中發生的情況,以這種由React控制的輸入表單元素而改變其值的方式,稱為:“受控組件”。

class NameForm extends React.Component {constructor(props) {super(props);this.state = {name: ''};this.handleNameChange = this.handleNameChange.bind(this);}handleNameChange(event) {this.setState({ name: event.target.value });};render() {return (<div><input type="text" value={this.state.name} onChange={this.handleNameChange}/></div> );} }

原理圖:

?

  • name開始是空字符串''。

  • 當鍵入a,handleNameChange獲取a和調用setState。然后,該輸入被重新呈現為具有的值a

  • 當鍵入b,handleNameChange獲取ab并設置該狀態的值。現在再次重新渲染輸入value="ab"。

這也意味著表單組件可以立即響應輸入更改;?例如:

  • 就地反饋,如驗證
  • 禁用按鈕,除非所有字段都有有效的數據
  • 執行特定的輸入格式,如信用卡號碼

"受控"執行情況

元素屬性方法方法回調中的新值
<input type="text" />value="string"onChangeevent.target.value
<input type="checkbox" />checked={boolean}onChangeevent.target.checked
<input type="radio" />checked={boolean}onChangeevent.target.checked
<textarea />value="string"onChangeevent.target.value
<select />value="option value"onChangeevent.target.value

?

?

?

?

?

?

可見效果:當注釋?this.setState({value: event.target.value});?這行代碼,文本框再次輸入時,頁面不會重新渲染,所產生效果即是文本框輸入不了值,即文本框值的改變受到?setState()?方法的控制,在未執行時,不重新渲染組件

?

不受控組件

表單數據由DOM本身處理。即不受setState()的控制,與傳統的HTML表單輸入相似,input輸入值即顯示最新值(使用 ref?從DOM獲取表單值)

class NameForm extends React.Component {constructor(props) {super(props);this.handleSubmit = this.handleSubmit.bind(this);}handleSubmit(event) {alert('A name was submitted: ' + this.input.value);event.preventDefault();}render() {return (<form onSubmit={this.handleSubmit}><label>Name:<input type="text" ref={(input) => this.input = input} /></label><input type="submit" value="Submit" /></form> );} }

?

結論

受控和不受控元素都有其優點,根據具體情況選擇。如果表單在UI反饋方面非常簡單,則對ref進行控制是完全正確的,即使用不受控組件。

特征不受控制受控
一次性檢索(例如表單提交)yesyes
及時驗證noyes
有條件的禁用提交按鈕noyes
執行輸入格式noyes
一個數據的幾個輸入noyes
動態輸入noyes

?

?

?

?

?

?

?

參考文章地址:

https://goshakkk.name/controlled-vs-uncontrolled-inputs-react/

轉載于:https://www.cnblogs.com/aichenxy/p/6758004.html

總結

以上是生活随笔為你收集整理的受控组件和不受控组件的区别的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。