我有一个商店,根据用户的操作偶尔获取数据 \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 });\nRun 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 次 |
| 最近记录: |