我剛剛進入Flux結構,並試圖更改我的應用程序以使用它,因爲它看起來合乎邏輯且高效。就我理解邏輯而言,我在實際生活中遇到了麻煩。假設我有一個虛構的電視節目SPA,使用vue,vue-router和vuex。無法找出Vuex背後的邏輯並將其應用
A系列頁面是一個組件,裏面有一個包含該節目季節(每個季節都是SeasonPoster組件)的區域,如果選擇了一個季節(單擊),它會顯示所有節目。
我有一個模塊series.js爲這個頁面的狀態(包含從API檢索的系列信息)和相應的變化和行動。
我應該在哪裏存儲季節/季節劇集的邏輯?我已經嘗試爲它創建一個模塊seasons.js,但似乎沒有必要,我嘗試將它放入系列模塊中,但它並不適合,例如:
- 當用戶單擊海報,它將調度一個動作setSeason,提交給state.selectedSeason,從API獲取劇集,並提交給state.selectedSeasonEpisodes並在頁面上顯示它們。但是,當我去到另一個系列的頁面時,它仍然存在。
- 手動清理state.selectedSeasonEpisodes和state.selectedSeason看起來像是一種「解決方法」,對於我沒有得到的東西。我應該首先把它放在那裏嗎?
- 我試着在state.series裏面放入「selectedSeasonEpisodes」和「selectedSeason」(每次進入一個新的系列頁面時,系列信息都會被清除),但是我收到很多錯誤,該系列尚未加載,其值爲「null」,屬性未定義。
- 我想過創建一個seasonsEpisodes(複數)而不是selectedSeasonEpisodes,當用戶點擊季節時加起來,有點像「緩存」,所以如果用戶點擊第1季,然後是2,然後是1,它會只做2個API調用。這種想法對於js應用程序是否有效?或者它只會增加狀態並使應用程序變慢?
- 在上面的方法中,它只顯示.find選定的季節劇集,但seasonsEpisodes的初始狀態是未定義的,因此它也會產生錯誤。我應該手動將初始狀態定義爲空數組嗎?
- 我是否應該在整個網站上應用此臨時緩存(僅用於頁面刷新),並將其還原爲state.series,緩存用戶單擊的所有系列?
這不是我第一次遇到邏輯/應用程序的問題和麪臨的「在哪裏把這個」問題,因此,如果任何人有一般的想法或資源,我可以用它來打開我的主意,這與責任每個文件/組件,它將非常感激!
你幫了我很多。我終於明白了Vuex的主要目的,現在我的開發比以前更加流暢。謝謝! – Gabriel
很高興能幫到你! –