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

React 組件之狀態(tài)

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

沒(méi)有什么是不可能的,只是需要找到正確的方法。

1. 什么是狀態(tài)?

狀態(tài)就是組件內(nèi)部特有數(shù)據(jù)的載體(組件數(shù)據(jù)掛載方式),改變數(shù)據(jù)頁(yè)面就會(huì)刷新,由組件自己設(shè)置和更改,也就是說(shuō)由組件自己產(chǎn)生、維護(hù),使用狀態(tài)的目的就是為了在不同的狀態(tài)下使組件的顯示不同(自己管理),這在 React 中稱(chēng)為:條件渲染。

為什么用狀態(tài)?

React 不能直接修改 DOM 來(lái)更新頁(yè)面。React 采用聲明式設(shè)計(jì),需要通過(guò)狀態(tài)的改變來(lái)更新頁(yè)面。

2. 使用狀態(tài) :state 關(guān)鍵字

import React, { Component } from 'react'

export default class App extends Component {
  // 組件狀態(tài)兩種寫(xiě)法
  // state = {
  //   isLove: false
  // }

  constructor() {
    super()
    this.state = {
      isLove: false
    }
  }

  isLoveFunc = ()=> {
    this.setState({
      isLove: !this.state.isLove
    })
  }

  render() {
    return (
      <div>
        <h1>喜歡就收藏吧!</h1>
        <button onClick={ ()=>{ this.isLoveFunc() } }>{this.state.isLove?"取消收藏":"收藏"}</button>
      </div>
    )
  }
}

3. 使用狀態(tài) :setState 關(guān)鍵字

this.state 是純 js 對(duì)象,在 vue 中,data 屬性是利用 object.defineproperty 處理過(guò)的,更改 data 的數(shù)據(jù)的時(shí)候會(huì)觸發(fā)數(shù)據(jù)的 getter 和 setter,但是 React 中沒(méi)有做這樣的處理,如果直接更改的話,React 是無(wú)法得知的,所以,需要使用特殊的更改狀態(tài)的方法 setState。

4. setState 同步異步

setState 處在同步邏輯中,異步更新?tīng)顟B(tài),更新真實(shí) Dom。

setState 處在異步邏輯中,V18:異步更新?tīng)顟B(tài),更新真實(shí) Dom,V17:同步更新?tīng)顟B(tài),更新真實(shí) Dom。但是要在 V18 中使用 createRoot 這個(gè)新的 renderapi。如果在 V18 中使用的還是 ReactDOM.render()這種老的 api 那結(jié)果是和 V17一致的。

setState 接受第二個(gè)參數(shù),第二個(gè)參數(shù)是回調(diào)函數(shù),狀態(tài)和 Dom 更新完后就會(huì)被觸發(fā)。

5. 列表 key 值

React 的高效依賴(lài)于所謂的 Virtual-DOM,盡量不碰 DOM。對(duì)于列表元素來(lái)說(shuō)會(huì)有一個(gè)問(wèn)題:元素可能會(huì)在一個(gè)列表中改變位置。要實(shí)現(xiàn)這個(gè)操作,只需要交換一下 DOM 位置就行了,但是 React 并不知道其實(shí)我們只是改變了元素的位置,所以它會(huì)重新渲染后面兩個(gè)元素 (再執(zhí)行 virtua-DOM),這樣會(huì)大大增加 DOM 操作。但如果給每個(gè)元素加上唯一的標(biāo)識(shí),React 就可以知道這兩個(gè)元素只是交換了位置,這個(gè)標(biāo)識(shí)就是 key,這個(gè) key 必須是每個(gè)元素唯一的標(biāo)識(shí)。為了列表的復(fù)用和重排,設(shè)置 key 值提高性能。理想 key 值為 item.id。然而在不涉及到列表的增加刪除、重排設(shè)置成索引值也沒(méi)有問(wèn)題。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-747007.html

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

本文來(lái)自互聯(lián)網(wǎng)用戶(hù)投稿,該文觀點(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 組件之狀態(tài)

    沒(méi)有什么是不可能的,只是需要找到正確的方法。 狀態(tài)就是組件內(nèi)部特有數(shù)據(jù)的載體(組件數(shù)據(jù)掛載方式),改變數(shù)據(jù)頁(yè)面就會(huì)刷新,由組件自己設(shè)置和更改,也就是說(shuō)由組件自己產(chǎn)生、維護(hù),使用狀態(tài)的目的就是為了在不同的狀態(tài)下使組件的顯示不同(自己管理),這在

    2024年02月05日
    瀏覽(11)
  • React 18 在組件間共享狀態(tài)

    React 18 在組件間共享狀態(tài)

    參考文章 有時(shí)候,希望兩個(gè)組件的狀態(tài)始終同步更改。要實(shí)現(xiàn)這一點(diǎn),可以將相關(guān) state 從這兩個(gè)組件上移除,并把 state 放到它們的公共父級(jí),再通過(guò) props 將 state 傳遞給這兩個(gè)組件。這被稱(chēng)為“狀態(tài)提升”,這是編寫(xiě) React 代碼時(shí)常做的事。 在這個(gè)例子中,父組件 Accordion 渲

    2024年02月10日
    瀏覽(25)
  • react反向代理:http請(qǐng)求狀態(tài)返回200,控制臺(tái)預(yù)覽和響應(yīng)沒(méi)有返回值是怎么回事

    react反向代理:http請(qǐng)求狀態(tài)返回200,控制臺(tái)預(yù)覽和響應(yīng)沒(méi)有返回值是怎么回事

    ?今天調(diào)試接口的時(shí)候遇到這樣的情況: ????????http請(qǐng)求狀態(tài)返回200,控制臺(tái)預(yù)覽和響應(yīng)沒(méi)有返回值。如下圖所示: 對(duì)照之前的請(qǐng)求地址,發(fā)現(xiàn)調(diào)試的這個(gè)請(qǐng)求地址跟原來(lái)的請(qǐng)求地址相比較多了一個(gè)前綴,再查看proxy代理文件,發(fā)現(xiàn)按照原來(lái)的請(qǐng)求地址做了反向代理,將

    2024年02月11日
    瀏覽(24)
  • react 09之狀態(tài)管理工具1 redux+ react-thunk的使用實(shí)現(xiàn)跨組件狀態(tài)管理與異步操作

    react 09之狀態(tài)管理工具1 redux+ react-thunk的使用實(shí)現(xiàn)跨組件狀態(tài)管理與異步操作

    npm install redux react-redux npm i redux-thunk redux-thunk redux-thunk是一個(gè)Redux的中間件,它允許你在Redux中編寫(xiě)異步的action creators。

    2024年02月13日
    瀏覽(36)
  • 為什么需要 TIME_WAIT 狀態(tài)

    為什么需要 TIME_WAIT 狀態(tài)

    還是用一下上一篇文章畫(huà)的圖 TCP 的 11 個(gè)狀態(tài),每一個(gè)狀態(tài)都缺一不可,自然 TIME_WAIT 狀態(tài)被賦予的意義也是相當(dāng)重要,咱們直接結(jié)論先行 上文我們提到 tcp 中,主動(dòng)關(guān)閉的一邊會(huì)進(jìn)入 TIME_WAIT 狀態(tài), 另外 Tcp 中的有 TIME_WAIT 狀態(tài),主要是有如下 2 個(gè)原因: 為了防止被動(dòng)關(guān)閉一

    2024年02月09日
    瀏覽(22)
  • React之組件的分類(lèi)、使用,事件對(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)
  • 為什么WebSocket需要前端心跳檢測(cè),有沒(méi)有原生的檢測(cè)機(jī)制?

    本文代碼 github、gitee、npm 在web應(yīng)用中,WebSocket是很常用的技術(shù)。通過(guò)瀏覽器的WebSocket構(gòu)造函數(shù)就可以建立一個(gè)WebSocket連接。但當(dāng)需要應(yīng)用在具體項(xiàng)目中時(shí),幾乎都會(huì)進(jìn)行心跳檢測(cè)。 設(shè)置心跳檢測(cè),一是讓通訊雙方確認(rèn)對(duì)方依舊活躍,二是瀏覽器端及時(shí)檢測(cè)當(dāng)前網(wǎng)絡(luò)線路可用

    2024年02月03日
    瀏覽(38)
  • 黑盒測(cè)試可不只是點(diǎn)點(diǎn)點(diǎn),也需要會(huì)用各種測(cè)試工具~

    黑盒測(cè)試可不只是點(diǎn)點(diǎn)點(diǎn),也需要會(huì)用各種測(cè)試工具~

    對(duì)于不了解軟件測(cè)試或者剛進(jìn)行不久的人們來(lái)說(shuō),黑盒測(cè)試就是點(diǎn)點(diǎn)點(diǎn),沒(méi)有技術(shù)含量,但是我要說(shuō)的,錯(cuò)!黑盒測(cè)試也是一項(xiàng)極具技術(shù)含量的工作! 首先說(shuō)一下黑盒測(cè)試,從權(quán)威書(shū)籍《軟件測(cè)試》的定義來(lái)說(shuō),黑盒測(cè)試就是把程序看作是一個(gè)不透明的黑盒子,對(duì)程序進(jìn)行數(shù)

    2024年04月27日
    瀏覽(27)
  • 路由器設(shè)置中的dhcp是什么意思?需要保持著啟動(dòng)狀態(tài)嗎?

    電腦十萬(wàn)個(gè)為什么平臺(tái)最新網(wǎng)友問(wèn)題解答:路由器設(shè)置中的 dhcp是什么? 需要保持著啟動(dòng)狀態(tài)嗎? 動(dòng)態(tài)主機(jī)設(shè)置協(xié)議(Dynamic Host Configuration Protocol, DHCP)是一個(gè)局域網(wǎng)的網(wǎng)絡(luò)協(xié)議,使用UDP協(xié)議工作,主要有兩個(gè)用途:給內(nèi)部網(wǎng)絡(luò)或網(wǎng)絡(luò)服務(wù)供應(yīng)商自動(dòng)分配IP地址給用戶(hù)給內(nèi)部網(wǎng)

    2024年02月06日
    瀏覽(18)
  • Angular中組件設(shè)計(jì)需要注意什么?

    在 Angular 中設(shè)計(jì)組件時(shí),有幾個(gè)重要的方面需要注意。以下是一些建議: 1、單一職責(zé)原則:確保每個(gè)組件只負(fù)責(zé)一個(gè)明確定義的任務(wù)。這有助于保持組件簡(jiǎn)單、可維護(hù),并且易于重用。 2、組件通信:了解組件之間的通信方式??梢允褂?@Input 和 @Output 裝飾器來(lái)實(shí)現(xiàn)父子組件

    2024年02月16日
    瀏覽(21)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包