1

私は2つの店を持っています:

export const custom_items = writable([]);
export const another_items = writable([]);

どちらもオブジェクトの配列を持ち、オブジェクトは次のようになります (もちろん、値は異なります)。

{
    id: 123
    amount: 123
    price: 123
}

「custom_items」と「another_items」の両方のストアの合計金額を保持する独自の派生変数を作成したいと思います。どうやってやるの?

私はこのコードだけでそれを行うことができますが、反応的ではありません:

function get_total_amount() {
    let total = 0;
    get(custom_items).every((item) => {
        total += item.amount;
    })
    get(another_items).every((item) => {
        total += item.amount;
    })
    return total;
}

派生ストアについて聞いたことがありますが、この場合の使用方法がわかりません。

4

2 に答える 2

4

派生ストアを使用する:

export const custom_items = writable([]);
export const another_items = writable([]);

const get_total = items => items.flat().map(x => x.amount).reduce((t, x) => t + x, 0)
    
export const total = derived(
  [custom_items, another_items], // deps
  items => get_total(items)      // [...values] => derived_value
)
于 2020-11-02T23:54:21.870 に答える