W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗(yàn)值獎勵
并非所有的應(yīng)用程序狀態(tài)都屬于你的應(yīng)用程序的組件層次結(jié)構(gòu)。有時,你會有一些值需要被多個不相關(guān)的組件或普通的 JavaScript 模塊訪問。
在 Svelte 中,我們通過 stores 來做到這一點(diǎn)。 store 只是一個帶有 ?subscribe
? 方法的對象,只要 store 值發(fā)生變化,就可以通知感興趣的各方。在 ?App.svelte
? 中,?count
? 是一個 store,我們在 ?count.subscribe
? 回調(diào)中設(shè)置 ?count_value
?。
在 ?stores.js
? 中查看 ?count
? 的定義。它是一個可寫 ?store
?,這意味著它除了 ?subscribe
? 之外還有 ?set
? 和 ?update
? 方法。
現(xiàn)在來到 ?Incrementer.svelte
? 中,來寫增加按鈕的邏輯:
function increment() {
count.update(n => n + 1);
}
單擊 ?+
? 按鈕現(xiàn)在應(yīng)該更新計數(shù)。對 ?Decrementer.svelte
? 執(zhí)行相反的操作。
最后,在 ?Resetter.svelte
? 中,實(shí)現(xiàn)重置:
function reset() {
count.set(0);
}
示例代碼
<script>
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;
});
</script>
<h1>The count is {count_value}</h1>
<Incrementer/>
<Decrementer/>
<Resetter/>
Decrementer.svelte
<script>
import { count } from './stores.js';
function decrement() {
count.update(n => n - 1);
}
</script>
<button on:click={decrement}>
-
</button>
Incrementer.svelte
<script>
import { count } from './stores.js';
function increment() {
count.update(n => n + 1);
}
</script>
<button on:click={increment}>
+
</button>
Resetter.svelte
<script>
import { count } from './stores.js';
function reset() {
count.set(0);
}
</script>
<button on:click={reset}>
reset
</button>
import { writable } from 'svelte/store';
export const count = writable(0);
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: