Heim  >  Fragen und Antworten  >  Hauptteil

Methode zum Erhalten einer Referenz auf den aktuellen Pinia-Shop: dynamische Kombinationsoperation

<p>Das ist „ungefähr“ das, was ich will: </p> <pre class="brush:php;toolbar:false;">// Dies ist eine allgemeine zusammensetzbare Funktion: Funktionsexport useGeneric() { Funktion genericAct(){ const store = getCurrentStore(); // Das ist es, was ich brauche store.a.value = 42; store.act2(); // Diese Aktion sollte mit einer gemeinsamen Funktion im Store implementiert werden } return {genericAct} } // Hier ist ein Beispielspeicher, der es verwendet export const useMyStore = defineStore('myStore', () => { const a = ref(1); const b = ref(1); const {genericAct} = useGeneric(); Funktion act2(){ b.Wert = 43; } return {a, b, genericAct, act2}; }</pre> <p>Wie erhalte ich den Speicher, an den diese Aktion gebunden ist? (Oder wie übergibt man es als Argument an <code>useGeneric</code>?)</p> <p>(Natürlich ist dies nur das einfachste Beispiel. In praktischen Anwendungen werde ich es verwenden, um nützlichere Dinge zu tun ...)</p>
P粉195200437P粉195200437455 Tage vor528

Antworte allen(1)Ich werde antworten

  • P粉106715703

    P粉1067157032023-08-15 12:45:05

    我不知道这是否是最好的方法,你也可以考虑 @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};
    }

    Antwort
    0
  • StornierenAntwort