当Svelte中的订阅存储发生值更改时,如何触发函数?

当Svelte中的订阅存储发生值更改时,如何触发函数?,svelte,svelte-3,svelte-component,svelte-store,Svelte,Svelte 3,Svelte Component,Svelte Store,我的一个组件订阅了存储中的一个变量。每当该存储变量发生变化时,我都想触发一个函数 stores.js 从“svelte/store”导入{writeable}; export const comparedProducts=可写([1,2,3]); 瘦身 从“./stores.js”导入{comparedProducts}; //如果$comparedProducts发生变化,则触发此函数,例如([1,2]) 常量someFunction=()=>{ //做点什么 } 在componenet.s

我的一个组件订阅了存储中的一个变量。每当该存储变量发生变化时,我都想触发一个函数

stores.js

从“svelte/store”导入{writeable};
export const comparedProducts=可写([1,2,3]);
瘦身

从“./stores.js”导入{comparedProducts};
//如果$comparedProducts发生变化,则触发此函数,例如([1,2])
常量someFunction=()=>{
//做点什么
}
在componenet.svelte中

从“./stores.js”导入{comparedProducts};
//如果$comparedProducts发生变化,则触发此函数,例如([1,2])
常量someFunction=()=>{
//做点什么
}
//可以使用.subscribe()订阅存储
//每个新值都将触发提供给.subscribe()的回调
让unsubscribeStore=comparedProducts.subscribe((currentValue)=>{
//currentValue==$comparedProducts
someFunction()
})
//完成后调用unsubscribeStore()停止侦听新值

找到了更干净的解决方案

从“./stores.js”导入{comparedProducts};
$:$比较产品,运行();
函数运行(){
//在这里做点什么
}

不知道为什么这会值得投反对票。我认为它很干净&本着苗条的精神……事实上,当商店的价值是虚假的时候,这就行不通了。您将需要逗号而不是逻辑AND:
$:$comparedProducts,run()这将确保始终执行
运行
功能,而不考虑存储的值。