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

React如何實(shí)現(xiàn)Vue的watch監(jiān)聽屬性

 更新時(shí)間:2023年06月02日 11:20:35   作者:一只小可樂(lè)吖  
在 Vue 中可以簡(jiǎn)單地使用 watch 來(lái)監(jiān)聽數(shù)據(jù)的變化,還能獲取到改變前的舊值,而在 React 中是沒(méi)有 watch 的,今天通過(guò)本文給大家講解React實(shí)現(xiàn)Vue的watch監(jiān)聽屬性的方法,需要的朋友可以參考下

在 Vue 中可以簡(jiǎn)單地使用 watch 來(lái)監(jiān)聽數(shù)據(jù)的變化,還能獲取到改變前的舊值,而在 React 中是沒(méi)有 watch 的。

React中比較復(fù)雜,但是我們?nèi)绻朐?React 中實(shí)現(xiàn)一個(gè)類似 Vue 的watch 監(jiān)聽屬性,也不是沒(méi)有辦法。

在React類組件中實(shí)現(xiàn)watch監(jiān)聽屬性

我們可以使用 componentDidUpdate 函數(shù)來(lái)監(jiān)聽組件屬性的變化,來(lái)模擬于 Vue 中的watch。

例如,我們有一個(gè)組件 MyComponent,其中有一個(gè)屬性 name:

class MyComponent extends React.Component {
  state = {
    name: 'John'
  }
  componentDidUpdate(prevProps, prevState) {
    if (prevState.name !== this.state.name) {
      console.log('Name changed to:', this.state.name)
    }
  }
  render() {
    return (
      <div>
        My name is {this.state.name}
      </div>
    )
  }
}

在 componentDidUpdate 函數(shù)中,我們可以比較當(dāng)前狀態(tài)和之前的狀態(tài),當(dāng) name 屬性發(fā)生變化時(shí),就可以執(zhí)行某些操作,例如打印日志。

需要注意的是,在 componentDidUpdate 函數(shù)中,我們還需要比較 prevprops 和 this.props ,以確保只有 name 屬性發(fā)生變化時(shí)才會(huì)執(zhí)行我們的操作:

componentDidUpdate(prevProps, prevState) {
    if (prevProps.name !== this.props.name || prevState.name !== this.state.name) {
      console.log('Name changed to:', this.state.name)
    }
}

這樣我們就可以在 React 類組件中實(shí)現(xiàn)類似于 Vue 中 watch 的功能,監(jiān)聽組件屬性的變化并執(zhí)行相應(yīng)的操作。

在React函數(shù)組件中實(shí)現(xiàn)watch監(jiān)聽屬性

在 React 中默認(rèn)函數(shù)組件不能使用生命周期。需要配合 React16.8新增的 Hook -- useEffect 才能實(shí)現(xiàn)。使用 React 實(shí)現(xiàn)類似 Vue 中的 watch 監(jiān)聽屬性可以通過(guò)使用 useEffect hook來(lái)完成。

1、引入useEffect hook:

import { useEffect } from 'react';

2、在組件中定義要監(jiān)聽的屬性:

const [data, setData] = useState({ name: 'John', age: 25 });
const [name, setName] = useState('');
// 監(jiān)聽data對(duì)象的name屬性的變化
useEffect(() => {
   console.log(`name: ${data.name}`);
}, [data.name]);

3、監(jiān)聽屬性的變化:

// 修改data對(duì)象的name屬性的值
setData({...data, name: 'Lucy'}); 

當(dāng)data對(duì)象的name屬性發(fā)生改變時(shí),useEffect 會(huì)觸發(fā)執(zhí)行其回調(diào)函數(shù),并打印出新的值。

需要注意的是,由于React 中所有組件狀態(tài)都是不可變的,所以我們?cè)谛薷囊O(jiān)聽的屬性時(shí)需要使用深拷貝,確保不會(huì)影響到原始的值。

到此這篇關(guān)于React實(shí)現(xiàn)Vue的watch監(jiān)聽屬性的文章就介紹到這了,更多相關(guān)Reactwatch監(jiān)聽屬性內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • React hook 'useState' is called conditionally報(bào)錯(cuò)解決

    React hook 'useState' is calle

    這篇文章主要為大家介紹了React hook 'useState' is called conditionally報(bào)錯(cuò)解決,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-12-12
  • React組件學(xué)習(xí)之Hooks使用

    React組件學(xué)習(xí)之Hooks使用

    這篇文章主要介紹了React hooks組件通信,在開發(fā)中組件通信是React中的一個(gè)重要的知識(shí)點(diǎn),本文通過(guò)實(shí)例代碼給大家講解react hooks中常用的父子、跨組件通信的方法,需要的朋友可以參考下
    2022-08-08
  • React?腳手架配置代理完整指南(最新推薦)

    React?腳手架配置代理完整指南(最新推薦)

    本文詳細(xì)介紹了React腳手架配置代理的多種方式,文章還討論了常見問(wèn)題的解決方案,如跨域問(wèn)題、WebSocket代理和錯(cuò)誤處理,并提供了生產(chǎn)環(huán)境配置建議和調(diào)試技巧,感興趣的朋友一起看看吧
    2024-12-12
  • webpack 2的react開發(fā)配置實(shí)例代碼

    webpack 2的react開發(fā)配置實(shí)例代碼

    本篇文章主要介紹了webpack 2的react開發(fā)配置實(shí)例代碼,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-07-07
  • react+redux仿微信聊天界面

    react+redux仿微信聊天界面

    這篇文章主要介紹了react+redux仿微信聊天IM實(shí)例|react仿微信界面 ,本文圖文并茂給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-06-06
  • React Hooks的深入理解與使用

    React Hooks的深入理解與使用

    這篇文章主要介紹了React Hooks的深入理解與使用,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-11-11
  • react-router中Link標(biāo)簽和a標(biāo)簽有什么區(qū)別

    react-router中Link標(biāo)簽和a標(biāo)簽有什么區(qū)別

    本文主要介紹了react-router中Link標(biāo)簽和a標(biāo)簽有什么區(qū)別,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2024-06-06
  • react路由基礎(chǔ)解讀(Router、Link和Route)

    react路由基礎(chǔ)解讀(Router、Link和Route)

    這篇文章主要介紹了react路由基礎(chǔ)解讀(Router、Link和Route),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-07-07
  • 使用Ant Design Anchor組件的一個(gè)坑及解決

    使用Ant Design Anchor組件的一個(gè)坑及解決

    這篇文章主要介紹了使用Ant Design Anchor組件的一個(gè)坑及解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-04-04
  • React嵌套組件的構(gòu)建順序

    React嵌套組件的構(gòu)建順序

    這篇文章主要介紹了React嵌套組件的構(gòu)建順序,幫助大家更好的理解和學(xué)習(xí)使用React,感興趣的朋友可以了解下
    2021-04-04

最新評(píng)論