Kaedah untuk mendapatkan rujukan kepada kedai Pinia semasa: operasi gabungan dinamik
P粉195200437
P粉195200437 2023-08-14 14:12:02
0
1
571
<p>Ini adalah "kira-kira" yang saya mahukan: </p> <pre class="brush:php;toolbar:false;">// Ini ialah fungsi boleh gubah umum: fungsi eksport useGeneric() { function genericAct(){ const store = getCurrentStore(); // Inilah yang saya perlukan nilai kedai.a. = 42; store.act2(); // Tindakan ini harus dilaksanakan menggunakan fungsi biasa dalam stor } pulangkan {genericAct} } // Berikut ialah contoh kedai yang menggunakannya export const useMyStore = defineStore('myStore', () => { const a = ref(1); const b = ref(1); const {genericAct} = useGeneric(); fungsi act2(){ b.nilai = 43; } kembalikan {a, b, genericAct, act2}; }</pre> <p>Bagaimanakah saya boleh mendapatkan storan yang terikat dengan tindakan ini? (Atau bagaimana untuk menyampaikannya sebagai hujah untuk <code>useGeneric</code>?)</p> <p>(Sudah tentu, ini hanyalah contoh paling mudah. ​​Dalam aplikasi praktikal, saya akan menggunakan ini untuk melakukan perkara yang lebih berguna...)</p>
P粉195200437
P粉195200437

membalas semua(1)
P粉106715703

Saya tidak tahu sama ada ini cara terbaik, anda juga boleh mempertimbangkan ulasan @Estus Flask:

Tetapi saya akhirnya memilih untuk lulus useMyStore sebagai parameter.

Perhatikan bahawa ia harus dipanggil dalam setiap operasi generik kerana pada masa useGeneric() dilaksanakan, stor belum lagi dibuat.

Berikut ialah contoh kod:

// 这是一个通用的可组合函数:
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};
}
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan