获取当前 Pinia store 的引用的方法:动态组合操作
P粉195200437
P粉195200437 2023-08-14 14:12:02
[Vue.js讨论组]

这是我想要的“大致”内容:

// 这是一个通用的可组合函数:
function export useGeneric() {
  function genericAct(){
    const store = getCurrentStore(); // 这是我需要的
    store.a.value = 42;
    store.act2(); // 这个动作应该在存储中使用通用函数实现
  }
  return {genericAct}
}

// 这是一个使用它的示例存储
export const useMyStore = defineStore('myStore', () => {
  const a = ref(1);
  const b = ref(1);
  const {genericAct} = useGeneric();
  function act2(){
    b.value = 43;
  }
  return {a, b, genericAct, act2};
}

我如何获取绑定了该动作的存储?(或者如何将它作为useGeneric的参数传递?)

(当然,这只是一个最简单的示例。在实际应用中,我会用这个做更多有用的事情...)

P粉195200437
P粉195200437

全部回复(1)
P粉106715703

我不知道这是否是最好的方法,你也可以考虑 @Estus Flask 的评论:

但是我最终选择将 useMyStore 作为参数传递。

请注意,它应该在每个通用操作中调用,因为在 useGeneric() 执行时,store 尚未创建。

下面是代码示例:

// 这是一个通用的可组合函数:
function export useGeneric(getStore:any) { // 这里的类型定义非常困难,也许使用接口来避免使用 any 是最好的解决方案
  function genericAct(){
    const store = getStore(); // 这就是我需要的
    store.a.value = 42;
    store.act2(); // 这个操作应该在 store 中使用泛型来实现
  }
  return {genericAct}
}

// 这是一个使用它的示例 store
export const useMyStore = defineStore('myStore', () => {
  const a = ref(1);
  const b = ref(1);
  const {genericAct} = useGeneric(useMyStore);
  function act2(){
    b.value = 43;
  }
  return {a, b, genericAct, act2};
}
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号