亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

理解react中受控組件和非受控組件及應(yīng)用場景

 更新時間:2024年01月22日 09:07:54   作者:王 歪歪  
當(dāng)涉及到React框架時,了解受控組件和非受控組件是非常重要的概念,本文主要介紹了理解react中受控組件和非受控組件及應(yīng)用場景,具有一定的參考價值,感興趣的可以了解一下

回答思路:說說受控組件–>說說非受控組件–>應(yīng)用場景

受控組件:

簡單來講,就是受我們控制的組件,組件的狀態(tài)全程響應(yīng)外部數(shù)據(jù)
舉例:

class TestComponent extends React.Component{
	constructor(props){
		super(props);
		this.state = {username:'Tom'};
	}
	render(){
		return <input name="username" value={this.state.username}></input>	
	}
}

這時候當(dāng)我們在輸入框輸入內(nèi)容時,會發(fā)現(xiàn)輸入的內(nèi)容無法顯示出來,此時input標(biāo)簽是一個可讀的狀態(tài),因為value被this.state.username所控制,當(dāng)用戶輸入時,this.state.username不會自動更新,這樣的話input的內(nèi)容就不會發(fā)生變化了,想要解除被控制,可以為input標(biāo)簽設(shè)置onChange事件,觸發(fā)的時候更新state,從而導(dǎo)致input框內(nèi)容更新

非受控組件

簡單來講,就是不受我們控制的組件,一般情況是在初始化的時候接受外部數(shù)據(jù),然后自己在內(nèi)部存儲自身狀態(tài),當(dāng)需要時,可以使用ref查詢DOM并查找當(dāng)前值,如下:

import React,{Component} form 'react';
export class ExampleComp extedns Component{
	constructor (props){
		super(props);
		this.inputRef = React.createRef();
	}
	handleSubmit = (e) =>{
		console.log("獲取input框的值為:",this.inputRef.current.value);
		e.preventDefault();
	}
	render(){
		return (
		<form onSubmit={e => this.handleSubmit(e)}>
		<input defaultValue="Tom" ref={this.inputRef} />
		<input type="submit" value="提交" />
		</form>
	)
	}
}

應(yīng)用場景

大多數(shù)推薦使用受控組件來實現(xiàn)表單,因為受控組件表單數(shù)據(jù)由React組件負責(zé)處理,非受控組件控制能力弱,表單數(shù)據(jù)由DOM本身處理,但更加方便快捷,代碼量少

特征不受控組件受控組件
一次性取值,如提交時
提交時驗證
即時現(xiàn)場驗證×
有條件地禁用提交按鈕×
強制輸入格式×
一個數(shù)據(jù)的多個輸入×
動態(tài)輸入×

受控組件與非受控組件區(qū)別

React受控組件和非受控組件之間的最大區(qū)別是組件的值是由React狀態(tài)控制還是由DOM節(jié)點控制。

受控組件:

  • 受控組件依賴于狀態(tài)
  • 受控組件只有繼承React.Component才會有狀態(tài)
  • 受控組件必須要在表單上使用onChange事件來綁定對應(yīng)的事件
  • 受控組件的修改會實時映射到狀態(tài)值上,此時可以對輸入的內(nèi)容進行校驗

非受控組件:

  • 非受控組件不受狀態(tài)的控制
  • 非受控組件獲取數(shù)據(jù)就是相當(dāng)于操作DOM,而不會更新React狀態(tài)
  • 非受控組件可以很容易和第三方組件結(jié)合,更容易同時集成 React 和非 React 代碼

受控組件與非受控組件優(yōu)缺點

受控組件
優(yōu)點

  • 容易進行驗證和處理:由于組件的值由React狀態(tài)控制,就可以輕松地驗證和處理組件的值。例如,可以使用onChange事件驗證組件的值是否滿足特定的條件,更新React狀態(tài)反映驗證結(jié)果。
  • 有更好的可預(yù)測性:由于組件的值由React狀態(tài)控制,因此組件的行為更容易預(yù)測。例如,當(dāng)組件的值發(fā)生變化時,它將始終更新React狀態(tài)并重新渲染,這使得應(yīng)用程序更加可預(yù)測。

缺點

  • 更多的代碼:由于組件的值由React狀態(tài)控制,因此需要編寫更多的代碼來管理組件的值。這可能會導(dǎo)致代碼更難以維護和理解。
  • 性能問題:由于每次組件的值發(fā)生變化時,它都會更新React狀態(tài)并重新渲染,這可能會影響性能。如果您在處理大量數(shù)據(jù)時使用受控組件,則可能會遇到性能問題。

非受控組件

優(yōu)點

  • 更快的更新:由于組件的值由DOM節(jié)點控制,因此非受控組件可以更快地更新。這使得非受控組件適用于需要高速更新的場景,例如實時搜索框。
  • 更少的代碼:由于組件的值不由React狀態(tài)控制,因此需要編寫更少的代碼來管理組件的值。這使得代碼更易于維護和理解。

缺點
難以進行驗證和處理:因為組件的值不由React狀態(tài)控制,難以對其進行驗證和處理。

  • 更少的可預(yù)測性:組件的值由DOM節(jié)點控制,因此組件的行為更難以預(yù)測。例如,當(dāng)組件的值發(fā)生變化時,它不會更新React狀態(tài)并重新渲染,這可能會導(dǎo)致應(yīng)用程序的行為更加不可預(yù)測。

到此這篇關(guān)于理解react中受控組件和非受控組件及應(yīng)用場景的文章就介紹到這了,更多相關(guān)react 受控組件和非受控組件內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家! 

相關(guān)文章

  • React項目配置axios和反向代理和process.env環(huán)境配置等問題

    React項目配置axios和反向代理和process.env環(huán)境配置等問題

    這篇文章主要介紹了React項目配置axios和反向代理和process.env環(huán)境配置等問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-12-12
  • React條件渲染實例講解使用

    React條件渲染實例講解使用

    在React中,你可以創(chuàng)建不同的組件來封裝各種你需要的行為。然后還可以根據(jù)應(yīng)用的狀態(tài)變化只渲染其中的一部分。React 中的條件渲染和JavaScript中的一致,使用JavaScript操作符if或條件運算符來創(chuàng)建表示當(dāng)前狀態(tài)的元素,然后讓React根據(jù)它們來更新UI
    2022-11-11
  • 簡談創(chuàng)建React Component的幾種方式

    簡談創(chuàng)建React Component的幾種方式

    這篇文章主要介紹了創(chuàng)建React Component的幾種方式,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,,需要的朋友可以參考下
    2019-06-06
  • React的事件處理你了解嗎

    React的事件處理你了解嗎

    這篇文章主要為大家詳細介紹了React的事件處理,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-03-03
  • Vite+React+TypeScript手?jǐn)]TodoList的項目實踐

    Vite+React+TypeScript手?jǐn)]TodoList的項目實踐

    本文主要介紹了Vite+React+TypeScript手?jǐn)]TodoList的項目實踐,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-05-05
  • Iconfont不能上傳如何維護Icon

    Iconfont不能上傳如何維護Icon

    這篇文章主要為大家介紹了在Iconfont還是不能上傳,要如何維護你的Icon,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-07-07
  • ReactNative之FlatList的具體使用方法

    ReactNative之FlatList的具體使用方法

    本篇文章主要介紹了ReactNative之FlatList的具體使用方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-11-11
  • React?echarts?組件的封裝使用案例

    React?echarts?組件的封裝使用案例

    這篇文章主要介紹了React?echarts?組件的封裝,本文通過示例代碼給大家介紹的非常詳細,需要的朋友可以參考下
    2024-06-06
  • react學(xué)習(xí)每天一個hooks?useWhyDidYouUpdate

    react學(xué)習(xí)每天一個hooks?useWhyDidYouUpdate

    這篇文章主要為大家介紹了react學(xué)習(xí)每天一個hooks?useWhyDidYouUpdate使用示例解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-04-04
  • React Hooks如何主動更新Hooks組件

    React Hooks如何主動更新Hooks組件

    這篇文章主要介紹了React Hooks如何主動更新Hooks組件問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-11-11

最新評論