鍍金池/ 問答/HTML/ vuex中的數(shù)據(jù)監(jiān)視和存儲

vuex中的數(shù)據(jù)監(jiān)視和存儲

1.vuex可不可以用來存儲數(shù)據(jù)還是本身就是用來存儲數(shù)據(jù)的。
例如 A、B2個頁面,A頁面進行ajax請求,拿到的數(shù)據(jù)需要在B頁面上展示出來。我個人的做法就是將拿到的ajax數(shù)據(jù)存儲到state中,然后B頁面再去調(diào)用state中的數(shù)據(jù)。已經(jīng)試驗過這種方法可行,但是不知道是否合理,或者說vuex本身就是用來做這個的。

2.如何監(jiān)聽vuex中數(shù)據(jù)的變化。
A頁面的按鈕控制B頁面上div的顯示,最簡單的方法就是頁面A的按鈕添加@click事件,click事件提交Mutations。修改state中的某個變量為false,頁面B監(jiān)聽這個變量,如果變量改變,就將div隱藏。

頁面B
export default{
    data(){
        ishow=true
    },
    computed:{
    ...MapState(['x'])
},
watch:{
    x(){
    this.ishow=this.x
    //或者這個樣子
    this.ishow=!this.ishow
    }

我現(xiàn)在的實現(xiàn)還是通過監(jiān)聽引入的變量是否發(fā)生改變,如果改變就對ishow進行改變,從而控制div的顯示隱藏。但是如果有10個頁面乃至跟更多的頁面或者組件需要監(jiān)聽x的改變。哪我每個頁面或組件都需要寫監(jiān)聽。有沒有其他方法可以實現(xiàn)state改變就能修改頁面或組件div的狀態(tài)。

回答
編輯回答
局外人

你好題主,你遇到這個問題是在單頁應用項目(前端路由)上,還是傳統(tǒng)的多頁項目(后端路由)上?

如果是前者,那么按 vuex 的響應式原理來說,不需要做任何監(jiān)聽操作,而且它本身就是用來做狀態(tài)管理的,狀態(tài)管理本身可以儲存一部分和交互有關系的數(shù)據(jù),當然也可以儲存所有的數(shù)據(jù)(但是沒有必要)。

如果是后者,那么按理說每個頁面的 store 是獨立的,似乎需要借助一些外部儲存方式。

2018年8月3日 19:58