React實現(xiàn)Vue的watch監(jiān)聽屬性方式
在 Vue 中可以簡單地使用 watch 來監(jiān)聽數(shù)據(jù)的變化,還能獲取到改變前的舊值,而在 React 中是沒有 watch 的。
React中比較復雜,但是我們如果想在 React 中實現(xiàn)一個類似 Vue 的 watch 監(jiān)聽屬性,也不是沒有辦法。
在React類組件中實現(xiàn)watch監(jiān)聽屬性
我們可以使用 componentDidUpdate 函數(shù)來監(jiān)聽組件屬性的變化,來模擬于 Vue 中的watch。
例如,我們有一個組件 MyComponent,其中有一個屬性 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ù)中,我們可以比較當前狀態(tài)和之前的狀態(tài),當 name 屬性發(fā)生變化時,就可以執(zhí)行某些操作,例如打印日志。
需要注意的是,在 componentDidUpdate 函數(shù)中,我們還需要比較 prevprops 和 this.props ,以確保只有 name 屬性發(fā)生變化時才會執(zhí)行我們的操作:
componentDidUpdate(prevProps, prevState) { if (prevProps.name !== this.props.name || prevState.name !== this.state.name) { console.log('Name changed to:', this.state.name) } }
這樣我們就可以在 React 類組件中實現(xiàn)類似于 Vue 中 watch 的功能,監(jiān)聽組件屬性的變化并執(zhí)行相應的操作。
在React函數(shù)組件中實現(xiàn)watch監(jiān)聽屬性
在 React 中默認函數(shù)組件不能使用生命周期。需要配合 React16.8新增的 Hook -- useEffect 才能實現(xiàn)。
使用 React 實現(xiàn)類似 Vue 中的 watch 監(jiān)聽屬性可以通過使用 useEffect hook來完成。
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對象的name屬性的變化 useEffect(() => { console.log(`name: ${data.name}`); }, [data.name]);
3、監(jiān)聽屬性的變化
// 修改data對象的name屬性的值 setData({...data, name: 'Lucy'});
當data對象的name屬性發(fā)生改變時,useEffect 會觸發(fā)執(zhí)行其回調函數(shù),并打印出新的值。
需要注意的是,由于React 中所有組件狀態(tài)都是不可變的,所以我們在修改要監(jiān)聽的屬性時需要使用深拷貝,確保不會影響到原始的值。
總結
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
React實現(xiàn)頁面狀態(tài)緩存(keep-alive)的示例代碼
因為?react、vue都是單頁面應用,路由跳轉時,就會銷毀上一個頁面的組件,但是有些項目不想被銷毀,想保存狀態(tài),本文給大家介紹了React實現(xiàn)頁面狀態(tài)緩存(keep-alive)的代碼示例,需要的朋友可以參考下2024-01-01react中使用redux-persist做持久化儲存的過程記錄
這篇文章主要介紹了react中使用redux-persist做持久化儲存的相關資料,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2024-01-01詳解使用create-react-app快速構建React開發(fā)環(huán)境
這篇文章主要介紹了詳解使用create-react-app快速構建React開發(fā)環(huán)境,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-05-05