99re热视频这里只精品,久久久天堂国产精品女人,国产av一区二区三区,久久久精品成人免费看片,99久久精品免费看国产一区二区三区

Svelte 自動(dòng)訂閱

2023-02-21 15:59 更新

前面的例子中的應(yīng)用程序可以工作,但有一個(gè)微妙的錯(cuò)誤--?unsubscribe?函數(shù)從未被調(diào)用。如果該組件被多次實(shí)例化和銷毀,這將導(dǎo)致內(nèi)存泄漏。

修復(fù)它的一種方法是使用 ?onDestroy? 生命周期鉤子:

<script>
	import { onDestroy } from 'svelte';
	import { count } from './stores.js';
	import Incrementer from './Incrementer.svelte';
	import Decrementer from './Decrementer.svelte';
	import Resetter from './Resetter.svelte';

	let count_value;

	const unsubscribe = count.subscribe(value => {
		count_value = value;
	});

	onDestroy(unsubscribe);
</script>

<h1>The count is {count_value}</h1>

不過(guò),它開始變得有點(diǎn)樣板化,尤其是當(dāng)您的組件訂閱了多個(gè) ?stores? 時(shí)。相反,Svelte 有一個(gè)小竅門——你可以通過(guò)在 ?store?名稱前加上 ?$? 來(lái)引用 ?store?值:

<script>
	import { count } from './stores.js';
	import Incrementer from './Incrementer.svelte';
	import Decrementer from './Decrementer.svelte';
	import Resetter from './Resetter.svelte';
</script>

<h1>The count is {$count}</h1>

自動(dòng)訂閱僅適用于在組件的頂級(jí)范圍內(nèi)聲明(或?qū)耄┑拇鎯?chǔ)變量。

您也不限于在標(biāo)記內(nèi)使用 ?$count? — 您也可以在 ?<script>? 的任何地方使用它,例如在事件處理程序或響應(yīng)式聲明中。

任何以 ?$? 開頭的名稱都被假定為引用 store 值。它實(shí)際上是一個(gè)保留字符——Svelte 會(huì)阻止您使用 ?$? 前綴聲明自己的變量。


以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)