如何在元件中監聽Vuex的資料變化
分析: 此題考查Vuex的應用及 Vue內部的監聽資料變化的機制
解答
: 首先確定 Vuex是為了解決什麼問題而出現的 ? Vuex是為了解決元件間狀態共享而出現的一個框架.其中有幾個要素 是組成Vuex的關鍵, state(狀態) mutations actions ,
state 表示 需要共享的狀態資料
mutations 表示 更改 state的方法集合 只能是同步更新 不能寫ajax等非同步請求
actions 如果需要做非同步請求 可以在actions中發起 然後提交給 mutations mutation再做同步更新
也就是 state 負責管理狀態 , mutation負責同步更新狀態 action負責 非同步獲取資料 同提交給mutation
所以 元件監聽Vuex資料變化 就是 監聽 Vuex中state的變化,
第一種方案
我們可以在元件中通過元件的 watch方法來做, 因為元件可以將state資料對映到 元件的計算屬性上,
然後 監聽 對映的計算屬性即可 程式碼如下
// vuex中的state資料 state: { count: 0 }, // A元件中對映 state資料到計算屬性 computed: { // this.$store.state.count // mapState 把全域性 count 變成 可以直接使用的 資料 ...mapState(['count']) } // A元件監聽 count計算屬性的變化 watch: { // watch 可以監聽 data 資料 也可以監聽 全域性 vuex資料 count () { // 用本身的資料進行一下計數 this.changeCount++ } }
第二種方案
vuex中store物件本身提供了watch
函式 ,可以利用該函式進行監聽
-
watch(fn: Function, callback: Function, options?: Object): Function
響應式地偵聽 fn
的返回值,當值改變時呼叫回撥函式。fn
接收 store 的 state 作為第一個引數,其 getter 作為第二個引數。最後接收一個可選的物件參數列示 Vue 的 vm.$watch
方法的引數。
程式碼
created () { this.$store.watch((state, getters) => { return state.count }, () => { this.changeCount++ }) }
相關文章
- vue中如何監聽vuex中的資料變化Vue
- Canal-監聽資料庫表的變化資料庫
- vue 父元件在created中傳值給子元件,子元件去監聽props變化Vue元件
- 自定義元件-資料監聽器元件
- SQL Server CDC配合Kafka Connect監聽資料變化SQLServerKafka
- 如何監聽URL的變化?
- React和Vue中,是如何監聽變數變化的ReactVue變數
- vue 監聽路由變化Vue路由
- vue 如何在迴圈中 "監聽" 的繫結v-model資料Vue
- MutationObserver監聽DOM變化示例Server
- 如何監聽陣列變化?陣列
- localeStorage 當前標籤頁變化監聽不到,只能監聽不同標籤頁變化,自己寫方法監聽
- 【JS】在連續性監聽事件中,監聽當前狀態是否變化JS事件
- 微信小程式,實現 watch 屬性,監聽資料變化微信小程式
- 如何在rac環境中增加監聽
- 安卓監聽網路變化安卓
- vue是如何監聽陣列變化的Vue陣列
- 用這招監聽 Vue 的插槽變化Vue
- 論如何監聽一個物件的變化物件
- 對於單頁應用中如何監聽 URL 變化的思考
- node.js監聽檔案變化Node.js
- JavaScript實時監聽input中值變化JavaScript
- 監聽Dom節點變化 - Mutation ObserverServer
- 動態監聽輸入框值的變化
- vue2-使用watch監聽路由的變化Vue路由
- 在單頁應用中,如何優雅的監聽url的變化
- 實時監聽input輸入框value的變化:
- 論如何監聽物件某個屬性的變化物件
- Vue響應式原理-如何監聽Array的變化?Vue
- vue 動態監聽視窗大小變化事件Vue事件
- 啟動資料庫監聽資料庫
- Mysql資料庫監聽binlogMySql資料庫
- Vue 子元件不重新整理,父元件資料改變子元件不變化Vue元件
- 為什麼Proxy可以優化vue的資料監聽機制優化Vue
- javaWeb中的監聽器JavaWeb
- 資料庫監聽夯故障分析資料庫
- 配置資料庫監聽白名單資料庫
- Python監測監聽螢幕介面內容變化併傳送通知Python