React生命周期事件

了解React生命周期事件及如何使用它們。 React類組件可以綁定幾個生命周期事件。 鉤子(Hooks)也允許函數組件以不同的方式訪問它們。 在組件的生命周期中,有一系列的事件被調用,你可以在每個事件上添加自定義功能。 在哪個生命周期事件上添加哪個鉤子是我們接下來要研究的內容。 首先,React組件的生命周期有3個階段: 加載 更新 卸載 讓我們詳細看一下這3個階段以及每個階段調用的方法。 加載 在加載時,在組件被加載到DOM之前,有4個生命周期方法:constructor、getDerivedStateFromProps、render和componentDidMount。 constructor constructor是組件加載時第一個呼叫的方法。 通常你使用constructor來設置初始狀態,使用this.state = ...。 getDerivedStateFromProps() 當狀態依賴於屬性時,可以使用getDerivedStateFromProps根據屬性值更新狀態。 它在React 16.3中添加,旨在代替被棄用的componentWillReceiveProps方法。 在這個方法中,你沒有訪問this,因為它是一個靜態方法。 它是一個純方法,所以它不應該引起副作用,並且在使用相同輸入多次呼叫時應該返回相同的輸出。 返回帶有更新後的狀態元素的對象(如果狀態未更改則為null) render() 從render()方法中,你返回構建該組件界面的JSX。 它是一個純方法,所以它不應該引起副作用,並且在使用相同輸入多次呼叫時應該返回相同的輸出。 componentDidMount() 這個方法是用於執行API調用或在DOM上進行操作的地方。 更新 當更新時,在組件被加載到DOM之前,有5個生命周期方法:getDerivedStateFromProps、shouldComponentUpdate、render、getSnapshotBeforeUpdate和componentDidUpdate。 getDerivedStateFromProps() 參見上述描述。 shouldComponentUpdate() 此方法返回一個布林值,true或false。你使用這個方法告訴React是否應該繼續重新渲染,默認為true。在重新渲染的成本較高且你希望更控制何時發生重新渲染時,你會返回false。 render() 參見上述描述。 getSnapshotBeforeUpdate() 在這個方法中,你可以訪問上一次渲染和當前渲染的props和state。 它的使用案例非常特殊,可能是你使用最少的一個。 componentDidUpdate() 此方法在組件在DOM中更新後呼叫。使用它來運行任何第三方DOM API或在DOM更改時必須更新的API。 它對應於加載階段的componentDidMount()方法。 卸載 在此階段,我們只有一個方法,componentWillUnmount。 componentWillUnmount() 當組件從DOM中被刪除時,調用此方法。使用它來執行任何所需的清理工作。 舊版 如果你正在開發一個使用了componentWillMount、componentWillReceiveProps或componentWillUpdate的應用程序,這些方法在React 16.3中已被棄用,你應該遷移到其他生命周期方法。

Svelte 生命周期事件

如何使用 Svelte 的生命周期事件 Svelte 中的每個組件都會觸發幾個生命周期事件,我們可以在其中進行操作,以實現我們想要的功能。 具體而言,我們有 onMount - 在組件渲染後觸發 onDestroy - 在組件被銷毀後觸發 beforeUpdate - 在 DOM 更新之前觸發 afterUpdate - 在 DOM 更新後觸發 我們可以通過 Svelte 觸發這些事件時安排執行特定的函數。 默認情況下,我們無法直接訪問這些方法,但是我們可以從 svelte 包中導入它們: <script> import { onMount, onDestroy, beforeUpdate, afterUpdate } from 'svelte' </script> onMount 的常見用法是從其他源獲取數據。 以下是使用 onMount 的示例: <script> import { onMount } from 'svelte' onMount(async () => { // 在組件渲染後執行某些操作 }) </script> onDestroy 允許我們清理數據或停止在組件初始化時開始的任何操作,比如使用 setInterval 設置的計時器或定期執行的函數。 需要注意的是,如果我們從 onMount 返回一個函數,那麼它的功能與 onDestroy 相同 - 當組件被銷毀時運行該函數:...