首页 > 解决方案 > 为 Svelte 商店提取可重用 getter 的最佳实践

问题描述

为 store 提取更新函数很容易,但是有没有一种简单的方法来提取 getter。我正在尝试做这样的事情,我可以在多个地方重用 getter 函数。我想我唯一的 2 个解决方案是为每个 getter 创建派生商店或将商店合并到 1 个自定义商店中?

export function enableAll () {
    if (enableAllAllowed()) {
        storeA.update(current => { ...current, enabled: true });
        storeB.update(current => { ...current, enabled: true });
        storeC.update(current => { ...current, enabled: true });
    }
}

export function enableAllAllowed () {
    return get(StoreA).available && get(StoreB).available && get(StoreC).available && get(StoreD).canEnableAll;
}

<Component1>
   <button disabled={!enableAllAllowed()} on:click={enableAll}>
       Enable All
   </button>
</Component1>

<Component2>
   <button disabled={!enableAllAllowed()} on:click={enableAll}>       
       Enable All
   </button>
</Component2>

标签: svelte-3

解决方案


推荐阅读