Méthode pour obtenir une référence au magasin Pinia actuel : opération de combinaison dynamique
P粉195200437
P粉195200437 2023-08-14 14:12:02
0
1
488
<p>C'est « à peu près » ce que je veux : </p> <pre class="brush:php;toolbar:false;">// Il s'agit d'une fonction composable générale : fonction export useGeneric() { fonction génériqueAct(){ const store = getCurrentStore(); // C'est ce dont j'ai besoin stocker.une.valeur = 42 ; store.act2(); // Cette action doit être implémentée à l'aide d'une fonction commune dans le magasin } retourner {genericAct} } // Voici un exemple de magasin qui l'utilise export const useMyStore = definitionStore('myStore', () => { const a = réf(1); const b = réf(1); const {genericAct} = useGeneric(); fonction acte2(){ b.valeur = 43 ; } return {a, b, genericAct, act2} ; }</pré> <p>Comment puis-je obtenir le stockage auquel cette action est liée ? (Ou comment le passer en argument à <code>useGeneric</code>?)</p> <p>(Bien sûr, ce n'est que l'exemple le plus simple. Dans des applications pratiques, je l'utiliserai pour faire des choses plus utiles...)</p>
P粉195200437
P粉195200437

répondre à tous(1)
P粉106715703

Je ne sais pas si c'est la meilleure façon, vous pouvez également considérer le commentaire de @Estus Flask :

Mais j'ai fini par choisir de passer useMyStore en paramètre.

Notez qu'il doit être appelé à chaque opération générique car au moment de l'exécution de useGeneric(), le magasin n'a pas encore été créé.

Voici l'exemple de code :

// 这是一个通用的可组合函数:
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};
}
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!