国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

React 受控和非受控組件

這篇具有很好參考價(jià)值的文章主要介紹了React 受控和非受控組件。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

無(wú)論你做什么,都要相信自己可以做到,因?yàn)槟愕臐摿κ菬o(wú)限的。

把父組件的狀態(tài)變成屬性傳遞給子組件,子組件接受這個(gè)屬性,聽(tīng)命于父組件。這個(gè)子組件就是叫做受控組件。在受控與非受控組件有兩種理解方案,第一:狹義上的受控與非受控,就是我們?cè)诒韱沃械氖芸嘏c非受控組件。第二:廣義上的受控與非受控組件,就是 React 組件的數(shù)據(jù)渲染是通過(guò)父組件傳遞過(guò)來(lái)的屬性控制的,能完全控制得住的就是受控組件,不能完全控制住的就是非受控組件。

1. 表單中非受控組件

React 要編寫一個(gè)表單非受控組件,可以使用 ref 來(lái)從 DOM 節(jié)點(diǎn)中獲取表單數(shù)據(jù)(訪問(wèn)節(jié)點(diǎn),通過(guò)節(jié)點(diǎn)訪問(wèn)值),與狀態(tài)沒(méi)有任何關(guān)系,這種就是非受控組件。 下面代碼使用非受控組件接受一個(gè)表單的值:

import React, { Component } from 'react'

export default class App extends Component {
  myusername = React.createRef()
  render() {
    return (
      <div>
        <h4>登錄頁(yè)</h4>
        {/* 這里設(shè)置 value 后導(dǎo)致 input 不能輸入了。寫成 value 形式本身就是一種受控方式。被字符串 “hubert” 控制住了。*/}
        <input type={"text"} ref={this.myusername} value="hubert"></input>
        {/* 非受控需要通過(guò) defaultValue 設(shè)置默認(rèn)值,只是第一次設(shè)置值 */}
        <input type={"text"} ref={this.myusername} defaultValue="hubert"></input>
        <button onClick={()=>{
          console.log(this.myusername.current.value)
        }}>登錄</button>
        <button onClick={()=>{
          this.myusername.current.value = ""
        }}>重置</button>
      </div>
    )
  }
}

因?yàn)榉鞘芸亟M件將真實(shí)數(shù)據(jù)儲(chǔ)存在 DOM 節(jié)點(diǎn)中,所以在使用非受控組件時(shí),有時(shí)候反而更容易同時(shí)集成 React 和非 React 代碼。如果你不介意代碼美觀性,并且希望快速編寫代碼,使用非受控組件往往可以減少你的代碼量。否則,你應(yīng)該使用受控組件。

默認(rèn)值問(wèn)題:在React 渲染生命周期時(shí),表單元素上的 value 將會(huì)覆蓋 DOM 節(jié)點(diǎn)中的值,在非受控組件中,你經(jīng)常希望 React 能賦予組件一個(gè)初始值,但是不去控制后續(xù)的更新。在這種情況下,你可以指定一個(gè) defaultvalue 屬性,而不是 value。

2. 表單中受控組件

現(xiàn)在如果有一個(gè)子組件需要拿到表單中的 value 值,該怎么辦?這里在輸入框值變更的時(shí)候,是不會(huì)同步、分享到子組件的,因?yàn)?render 函數(shù)是不會(huì)重新執(zhí)行的。

在 HTML 中,表單元素(如 <input><select>)通常自己維護(hù) state,并根據(jù)用戶輸入進(jìn)行更新。而在 React 中,可變狀態(tài)(mutable state)通常保存在組件的 state 屬性中,并且只能通過(guò)使用 setState() 來(lái)更新。我們可以把兩者結(jié)合起來(lái),使 React 的 state 成為“唯一數(shù)據(jù)源”。渲染表單的 React 組件還控制著用戶輸入過(guò)程中表單發(fā)生的操作。被 React 以這種方式控制取值的表單輸入元素就叫做"受控組件”。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-747478.html

 {/* 在輸入框值變更的時(shí)候,是不會(huì)同步、分享到子組件的 */}
 <Child value={this.myusername.current.value}></Child>

// 設(shè)置成受控組件后后
<Child value={this.state.username}></Child>
import React, { Component } from 'react'

export default class App extends Component {
  state = {
    username: "hubert"
  }
  render() {
    return (
      <div>
        <h4>登錄頁(yè)</h4>
        {/* 這里設(shè)置 value 后導(dǎo)致 input 不能輸入了。寫成 value 形式本身就是一種受控方式。被字符串 “hubert” 控制住了。*/}
        {/* 非受控需要通過(guò) defaultValue 設(shè)置默認(rèn)值,只是第一次設(shè)置值 */}
        <input type={"text"} ref={this.myusername} value={this.state.username} onChange={(evt)=>{
          this.setState({
            username: evt.target.value
          })
        }}></input>
        <button onClick={()=>{
          console.log(this.state.username)
        }}>登錄</button>
        <button onClick={()=>{
          this.setState({
            username:""
          })
        }}>重置</button>
        {/* 在輸入框值變更的時(shí)候,是不會(huì)同步、分享到子組件的 */}
        {/* <Child value={this.myusername.current.value}></Child> */}
      </div>
    )
  }
}

// 在 react 中 onInput 和 onChange 事件的行為一樣的。原生 JS 則不然。

到了這里,關(guān)于React 受控和非受控組件的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • React 中的受控組件

    React 中的受控組件是由 React 組件管理其值的表單組件。它們的值受到 React 組件狀態(tài)的控制,更新時(shí)會(huì)通過(guò)回調(diào)函數(shù)進(jìn)行數(shù)據(jù)的處理。 受控組件的特點(diǎn)包括: 值由狀態(tài)控制:受控組件的值是通過(guò) React 組件的狀態(tài)進(jìn)行控制和更新的。 通過(guò)事件處理器更新值:受控組件通常配合

    2024年02月15日
    瀏覽(22)
  • 初識(shí)React/JSX/組件/state/受控組件

    初識(shí)React/JSX/組件/state/受控組件

    ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?

    2024年02月12日
    瀏覽(23)
  • React之組件的分類、使用,事件對(duì)象,this指向問(wèn)題,修改狀態(tài)以及受控組件與非受控組件

    組件是 React 開(kāi)發(fā)(現(xiàn)代前端開(kāi)發(fā))中最重要的內(nèi)容 組件允許你將 UI 拆分為獨(dú)立、可復(fù)用的部分,每個(gè)部分都可以獨(dú)立的思考 組合多個(gè)組件(組裝樂(lè)高積木)實(shí)現(xiàn)完整的頁(yè)面功能 特點(diǎn):獨(dú)立、可復(fù)用、可組合 組件包含三部分:HTML/CSS/JS 展示頁(yè)面中的可復(fù)用部分 函數(shù)組件:使

    2024年02月16日
    瀏覽(104)
  • 深入探討React受控組件的表單處理

    深入探討React受控組件的表單處理

    React中的受控組件是一種通過(guò)React狀態(tài)管理表單元素值的方式。在這篇博客中,我們將深入探討受控組件的使用,通過(guò)一個(gè)登錄表單實(shí)例,了解其優(yōu)勢(shì)、實(shí)現(xiàn)方式以及在實(shí)際項(xiàng)目中的應(yīng)用。 在React中,受控組件是由React狀態(tài)管理表單元素值的一種形式。通過(guò)React的狀態(tài)(state)來(lái)

    2024年01月25日
    瀏覽(25)
  • 封裝vue2局部組件都要注意什么

    template? =? 組件的模板結(jié)構(gòu)? (必選) 每個(gè)組件對(duì)應(yīng)的模板結(jié)構(gòu),需要定義到template節(jié)點(diǎn)中 template中使用的指令 template定義根節(jié)點(diǎn) 注:vue 2.x版本中,template節(jié)點(diǎn)內(nèi)dom結(jié)構(gòu)僅支持單個(gè)根節(jié)點(diǎn);但在vue 3.x版本中,支持多個(gè)根節(jié)點(diǎn) script? =? 組件的javascript行為? (可選) script中的

    2024年02月13日
    瀏覽(21)
  • Vue3 - Element Plus 去除下拉菜單周圍出現(xiàn)黑色邊框輪廓,當(dāng)用鼠標(biāo)移入和點(diǎn)擊聚焦時(shí)就會(huì)出現(xiàn) “黑邊“ 的情況,無(wú)論里面是什么 HTML 元素和組件都會(huì)由此問(wèn)題(完美解決方案)

    Vue3 - Element Plus 去除下拉菜單周圍出現(xiàn)黑色邊框輪廓,當(dāng)用鼠標(biāo)移入和點(diǎn)擊聚焦時(shí)就會(huì)出現(xiàn) “黑邊“ 的情況,無(wú)論里面是什么 HTML 元素和組件都會(huì)由此問(wèn)題(完美解決方案)

    在 Element Plus 組件庫(kù)中,使用 dropdown 下拉菜單時(shí)鼠標(biāo)點(diǎn)擊或移入時(shí)周圍出現(xiàn)黑色邊框問(wèn)題。 本文 實(shí)現(xiàn)了 vue3+element plus 項(xiàng)目開(kāi)發(fā)中,隱藏下拉菜單 el-dropdown-menu / el-dropdown-item 周圍的邊框, 如下圖所示,當(dāng)鼠標(biāo)移入(hover)和點(diǎn)擊時(shí)就會(huì)圍繞一圈黑色邊框,但通過(guò)本文的方案

    2024年02月09日
    瀏覽(221)
  • React中的組件的渲染函數(shù)(Render Function)是什么?什么是React中的函數(shù)組件和類組件?如何在React中進(jìn)行狀態(tài)管理?

    React中的組件可以有多種形式的渲染函數(shù),包括傳統(tǒng)的render()方法,以及近年來(lái)興起的函數(shù)組件和Hooks中的useState()和useEffect()。在這篇文章中,我將詳細(xì)介紹渲染函數(shù),以及如何在React中使用它們。 渲染函數(shù)(Render Function)是指組件在生命周期中的一個(gè)特殊方法,它的作用是根據(jù)

    2024年02月13日
    瀏覽(26)
  • React 組件化是什么?

    React 是一個(gè)用于構(gòu)建用戶界面的JavaScript庫(kù),它采用了組件化的開(kāi)發(fā)模式,使得開(kāi)發(fā)者可以將界面劃分為獨(dú)立的、可重用的組件,以便更輕松地管理和維護(hù)復(fù)雜的應(yīng)用程序。 組件化開(kāi)發(fā)是一種將應(yīng)用程序拆分為小塊、可重用的部分的方法。 在React中,每個(gè)組件都有自己的狀態(tài)

    2024年02月10日
    瀏覽(20)
  • 說(shuō)說(shuō)對(duì)React中類組件和函數(shù)組件的理解?有什么區(qū)別?

    通過(guò)ES6類的編寫形式去編寫組件,該類必須繼承React.Component,通過(guò)this.props的方式去訪問(wèn)父組件傳遞過(guò)來(lái)的參數(shù),且在類組件中必須使用render方法,在return中返回React對(duì)象,如下: 通過(guò)函數(shù)編寫的形式去實(shí)現(xiàn)一個(gè)React組件,是React中定義組件最簡(jiǎn)單的方式,如下: 1.編寫形式不

    2024年01月22日
    瀏覽(14)
  • 請(qǐng)簡(jiǎn)述React是什么?React的主要特點(diǎn)有哪些?React中有哪些主要組件?

    React是一個(gè)用于構(gòu)建用戶界面的JavaScript庫(kù),它由Facebook開(kāi)發(fā)并開(kāi)源。React的主要特點(diǎn)是其數(shù)據(jù)驅(qū)動(dòng)和組件化的設(shè)計(jì)理念。它允許開(kāi)發(fā)者將復(fù)雜的界面分解為簡(jiǎn)單的組件,并將這些組件以數(shù)據(jù)流的方式組合在一起,使得組件的狀態(tài)和行為可以根據(jù)數(shù)據(jù)的變化而自動(dòng)更新。React還提

    2024年02月14日
    瀏覽(33)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包