簡體   English   中英

Vue3 | Pinia - 在可組合函數中觀看 storeToRefs 不起作用

[英]Vue3 | Pinia - Watching storeToRefs in composable function does not work

我試圖了解可組合的目的。 我有一個像這樣的簡單組合,並試圖從watch不觸發的 Pinia 商店觀看狀態:

import { ref, watch, computed } from "vue";
import { storeToRefs } from "pinia";
import useFlightsStore from "src/pinia/flights.js";
import usePassengersStore from "src/pinia/passengers.js";

export function useFlight() {
    const route = useRoute();

    const modalStore = useModalStore();
    const flightsStore = useFlightsStore();
    const { selection } = storeToRefs(flightsStore);

    const passengersStore = usePassengersStore();
    const { passengers, adults, children, infants } =
        storeToRefs(passengersStore);

    watch([adults, children, infants], (val) => console.log('value changes', val))


在 Vue 組件中,同樣的東西可以按預期工作。

所以我們不能觀察可組合物中的值嗎?

我認為您可以查看可組合物中的值。

但是,要查看 pinia 狀態,它必須在箭頭函數內:

watch(() => somePiniaState, (n) => console.log(n, " value changed"));

這就像看一個反應物體。


我相信這應該更好地記錄下來。 在 Pinia 文檔中,我們可以閱讀如何查看整個商店或如何訂閱商店,但不能閱讀如何查看組件或可組合中的單個狀態屬性。

此外,文檔有點害羞地解釋說您可以使用setup()描述商店的方式來查看商店內的屬性。

更多信息在這里: https ://github.com/vuejs/pinia/discussions/794#discussioncomment-1643242


此錯誤也會靜默失敗(或不執行),這無濟於事......

我需要查看我的一個組件中的特定狀態屬性,但我在官方文檔中沒有找到我的用例。 我使用了手表和 storeToRefs 之間的混合來做到這一點。

import { usePlaylistsStore } from '@/stores/playlists'
import { storeToRefs } from 'pinia'
export default {
    name: 'PlaylistDetail',

    setup() {
        const playlistsStore = usePlaylistsStore()
        const { selectedGenres } = storeToRefs(playlistsStore)
        return { selectedGenres }
    },
    watch: {
        selectedGenres(newValue, oldValue) {
            // do something
        }
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM