我有一个商店,根据用户的操作偶尔获取数据 \xe2\x80\x93 。这是一个商店,因为它的数据在全球范围内使用,并且主要所有组件都需要最新的可用数据。
\n但是,对于一个特定组件,我只需要加载第一个数据。
\n对于此组件,没有理由subscribe()
在第一次获取后保持函数运行。那么,如何停止这个订阅功能呢?
Svelte 文档中的唯一示例使用了onDestroy()
,但我需要手动停止它subscribe()
。
我尝试使用简单的“计数”(如果计数> 1,则取消订阅),但它不起作用。
\n import user from \'./store\'\n \n let usersLoaded = 0\n \n const unsubscribe = user.subscribe(async (data) => {\n if(data.first_name !== null) {\n usersLoaded = usersLoaded + 1\n }\n \n if(usersLoaded > 1) {\n unsubscribe;\n }\n });\n
Run Code Online (Sandbox Code Playgroud)\n这是完整的工作 REPL:
\n\xe2\x86\x92 https://svelte.dev/repl/95277204f8714b4b8d7f72b51da45e67?version=3.35.0
\n你可以试试 Svelte's get
。订阅适用于您需要对更改做出反应的情况;这是一种长期的关系。如果您只需要商店的当前价值,get
那就是正确的选择。
有时,您可能需要检索您未订阅的商店的值。
get
允许您这样做。Run Code Online (Sandbox Code Playgroud)import { get } from 'svelte/store'; const value = get(store);
我不得不使用unsubscribe()
而不是unsubscribe
这是最终的工作 REPL,进行了一些改进: https://svelte.dev/repl/95277204f8714b4b8d7f72b51da45e67 ?version=3.35.0
归档时间: |
|
查看次数: |
4781 次 |
最近记录: |