同时订阅多个可写表格

  • 本文关键字:表格 svelte
  • 更新时间 :
  • 英文 :


我有一个计数器

function createCountable(initValue: number, delta:number = 1) {
const count = writable(initValue);
return {
value: count,
inc: () => count.update(n => n + delta),
dec: () => count.update(n => n - delta),
};
}

和一个商店

function createStore() {
const cycles = createCountable(4, 1)
const cycleLength = createCountable(30, 5)
let time: string = '00:00'
//todo how to subscribe??
return {
cycles,
cycleLength,
time
}
}

每当cyclescycleLength更新时,我都想重新计算时间。如何在一个功能/一个订阅中处理此问题?

或者我应该重新设计我的商店的架构?

我有两个可写表的原因是,出于维护的原因,我喜欢用它的修改函数来封装值——我的更新函数中也可以有多态性。

您应该了解派生存储。我会把你的例子写成这个

const cycles = createCountable(5, 1);
const cycleLength = createCountable(30, 5);
const time = derived([cycles, cycleLength], ([$cycles, $cycleLength]) => {
return "00:00" // do whatever you like here
})

然后在您的组件中,当您更新周期或周期长度时,$time将自动更新。

我还没有测试过,但我认为它可以

有关更多信息,请查看文档。

最新更新