0

在使用 pinia 的实验性待办事项列表应用程序中,我有一个商店状态,focusTaskId其中taskById包含任何本地缓存的项目,由它们的 id 存储。

鉴于 v-model 未存储在存储的顶级键中,如何对缓存的任务之一使用 v-model?

interface State {
  focusTaskId: string | null;
  taskById: {
    [k in string]?: Task;
  };
}

export const useStore = defineStore("vault", {
  state: (): State => ({
    focusTaskId: null,
    taskById: {},
  }),
});

当一个项目成为焦点时,我想使用 v-model 将表单绑定到存储在 store 中 taskById 下的相应任务。为此,它必须是表单组件中的本地别名可写属性。

不幸的是,为可写存储属性设置别名,mapWritableState只接受来自存储的顶级键,例如["focusTaskId"]or ["taskById"],并且不能接受通用路径表达式,例如 [ taskById['${id}']]

是否有一种解决方法,以便我可以通过 v-model 将我的表单动态绑定到taskById当前关注的任何对象,即使它“向下两层”?

我来自 React 和我的 lauf 存储,我可以为 taskById 对象分区存储,并使用“id”作为(新)顶级键从那里绑定。也许有一个等效的方法可以从 pinia 中另一个商店的子对象派生一个商店,然后我可以在顶层绑定那个新商店?

4

0 回答 0