欧美成人精品手机在线观看_69视频国产_动漫精品第一页_日韩中文字幕网 - 日本欧美一区二区

LOGO OA教程 ERP教程 模切知識交流 PMS教程 CRM教程 開發文檔 其他文檔  
 
網站管理員

Vue.js 生命周期鉤子與 React’s useEffect 的深度解讀


2025年2月13日 0:4 本文熱度 518

?

在構建交互式 Web 應用程序時,處理副作用是至關重要的。React 的 useEffect 和 Vue 的生命周期鉤子都服務于這一目的,但它們的實現方式有所不同。在本文中,我們將探索這些機制的工作原理,比較它們的特點,并通過實際示例來理解它們的差異與相似之處。

什么是副作用?

副作用是指任何與外部世界交互或對組件渲染之外產生影響的操作。常見示例包括:

  • 從 API 獲取數據
  • 直接操作 DOM
  • 設置訂閱或定時器

React 使用 useEffect 來處理這些操作,而 Vue 則采用生命周期鉤子和響應式觀察器。

React 的 useEffect:處理副作用的首選工具

React 的 useEffect 是一個功能強大的鉤子,用于管理副作用:

import { useState, useEffect } from 'react';

function MyComponent() {
  const [count, setCount] = useState(0);

  useEffect(() => {
    console.log("組件已掛載或 count 發生變化:", count);

    return () => {
      console.log("在重新運行或卸載前進行清理");
    };
  }, [count]); // 在組件掛載時以及 'count' 發生變化時運行

  return (
    <div>
      <p>Count: {count}</p>
      <button onClick={() => setCount(count + 1)}>Increment</button>
    </div>

  );
}

關于 useEffect 的要點

  • 依賴數組:控制副作用運行的時機。空數組([])表示僅運行一次;依賴項(例如 [count])表示在依賴項發生變化時運行。
  • 清理函數:在下一次副作用運行之前或組件卸載時運行,適用于清理定時器、訂閱等內容。

Vue 的生命周期鉤子:結構化且簡單

Vue 將副作用組織到特定的生命周期鉤子中:

  • onMounted:在組件被添加到 DOM 后運行(類似于 React 中的 useEffect(() => {}, []))。
  • onUpdated:在響應式數據變化導致重新渲染后運行(類似于帶有依賴項的 useEffect)。
  • onUnmounted:在組件從 DOM 中移除之前運行(類似于 useEffect 的清理功能)。

Vue 組合式 API 示例

import { ref, onMounted, onUpdated, onUnmounted } from 'vue';

export default {
  setup() {
    const count = ref(0);

    onMounted(() => {
      console.log("Vue:組件已掛載");
    });

    onUpdated(() => {
      console.log("Vue:組件已更新", count.value);
    });

    onUnmounted(() => {
      console.log("Vue:組件已卸載");
    });

    const increment = () => count.value++;

    return { count, increment };
  },
  template`
    <div>
      <p>Vue Count: {{ count }}</p>
      <button @click="increment">Increment</button>
    </div>
  `

};

Vue 中的 watchEffect:更接近 useEffect 的替代方案

Vue 的 watchEffect 會自動跟蹤響應式依賴項,并在它們發生變化時重新運行,類似于 React 的 useEffect

import { ref, watchEffect } from 'vue';

export default {
  setup() {
    const count = ref(0);

    watchEffect(() => {
      console.log("Count changed:", count.value);
    });

    return { count };
  },
  template`<div>{{ count }}</div>`
};

主要差異

特性
React (useEffect)
Vue (生命周期鉤子 & watchEffect)
在掛載時運行一次
? (useEffect(() => {}, []))
? (onMounted)
自動跟蹤依賴項
? 不支持
? 支持
在卸載時清理
? 清理函數
? (onUnmounted)
監聽特定變量
? 使用依賴數組
? (watch)

實際示例:獲取數據

React

import { useEffect, useState } from 'react';

function DataFetcher() {
  const [data, setData] = useState(null);

  useEffect(() => {
    fetch('https://api.example.com/data')
      .then(response => response.json())
      .then(json => setData(json));
  }, []);

  return <div>{data ? data.title : 'Loading...'}</div>;
}

Vue

import { ref, onMounted } from 'vue';

export default {
  setup() {
    const data = ref(null);

    onMounted(() => {
      fetch('https://api.example.com/data')
        .then(response => response.json())
        .then(json => data.value = json);
    });

    return { data };
  },
  template`<div>{{ data ? data.title : 'Loading...' }}</div>`
};

總結

React 的 useEffect 功能強大,但隨著依賴項和清理邏輯的增加,可能會變得復雜。Vue 的生命周期鉤子和 watchEffect 提供了一種更結構化、更具聲明式的方法,借助 Vue 的響應式系統簡化了副作用的管理。兩種框架都為開發者提供了強大的工具——選擇哪一種取決于你的項目需求以及你對每種系統的熟悉程度。

你更傾向于 React 的靈活性還是 Vue 的結構化簡潔性來管理副作用呢?歡迎在評論區留言告訴我們!


原文地址:https://dev.to/pravinjadhav/understanding-vuejs-lifecycle-hooks-vs-reacts-useeffect-36cc](https://dev.to/pravinjadhav/understanding-vuejs-lifecycle-hooks-vs-reacts-useeffect-36cc)
作者:Pravin Jadhav


該文章在 2025/2/13 9:06:22 編輯過
關鍵字查詢
相關文章
正在查詢...
點晴ERP是一款針對中小制造業的專業生產管理軟件系統,系統成熟度和易用性得到了國內大量中小企業的青睞。
點晴PMS碼頭管理系統主要針對港口碼頭集裝箱與散貨日常運作、調度、堆場、車隊、財務費用、相關報表等業務管理,結合碼頭的業務特點,圍繞調度、堆場作業而開發的。集技術的先進性、管理的有效性于一體,是物流碼頭及其他港口類企業的高效ERP管理信息系統。
點晴WMS倉儲管理系統提供了貨物產品管理,銷售管理,采購管理,倉儲管理,倉庫管理,保質期管理,貨位管理,庫位管理,生產管理,WMS管理系統,標簽打印,條形碼,二維碼管理,批號管理軟件。
點晴免費OA是一款軟件和通用服務都免費,不限功能、不限時間、不限用戶的免費OA協同辦公管理系統。
Copyright 2010-2025 ClickSun All Rights Reserved