Saya mempunyai kedai berikut:
export const useMyStore = defineStore('myStore', { state: () => { return { openTransOnly: false, keyword: '', openTransStatus: { nextPage: 0, complete: false }, pastDueTransStatus: { nextPage: 0, complete: false }, }; }, getters: { transStatus(state) { return state.openTransOnly ? state.openTransStatus : state.pastDueTransStatus; }, }, });
Sekarang katakan saya mahu menukar atribut "kata kunci" di atas kepada Ruj. Inilah yang saya lakukan:
const myStore = useMyStore(); const { keyword: needle } = storeToRefs(myStore);
Saya juga mempunyai sifat pengiraan berikut dalam komponen saya:
const page = computed({ get: () => myStore.transStatus.nextPage, set: (value) => (myStore.transStatus.nextPage = value), });
Ia berfungsi dengan baik. Walau bagaimanapun, saya ingin tahu cara mentakrifkan "halaman" menggunakan "storeToRefs" yang sama di atas. Saya mencuba ini:
const { keyword: needle, transStatus: { nextPage: page } } = storeToRefs(myStore);
Tetapi tertera "Halaman tidak ditakrifkan". Apa yang saya buat salah? adakah mungkin?
Sebagai
storeToRefs
名称所示,它返回引用。transStatus
是一个引用,没有nextPage
属性,它是transStatus.value.nextPage
。由于transStatus
的工作方式以及该值是标量,过早解构nextPage
boleh menyebabkan kehilangan kereaktifan.Jika ini adalah senario penggunaan biasa, kedai boleh digabungkan dengan
page
计算。由于商店状态不应在商店外部发生变化,因此page
可以与setPage
operasi.