vue中如何監聽vuex中的資料變化
vue監聽vuex中資料變化的方法:可以先透過計算屬性computed來獲取vuex中的資料;然後透過watch來監聽計算屬性中值的變化,獲取資料變更前後的值,並作出相應的處理。
本教程操作環境:windows7系統、vue2.9.6版,DELL G3電腦。
1.在vue檔案中監聽vuex的資料變化
首先透過計算屬性來獲取vuex中的資料
再透過watch來監聽計算屬性中的值來獲取變化
<script> import { mapGetters } from 'vuex' export default { data() { return { } }, computed: { ...mapGetters(["mapboxMap"]), mapboxMap1() { // return this.$store.state.mapbox.map; return this.mapboxMap; } }, watch: { mapboxMap1(newData, oldData) { } }, } </script>
2.vue如何在非vue檔案中監聽vuex資料的變更?
通常我們在vue檔案中監聽資料的變更,尤其是vuex中資料的變更非常方便,透過watch函式可以很便捷的拿到資料變更前後的值,並作出相應的處理。
但是,當我們需要在諸如js等檔案中監聽到資料的變更就會很不容易,所幸,vue官網提供瞭解決思路
watch(fn: Function, callback: Function, options?: Object): Function
vuex的例項方法,接收兩個引數:
第一個引數為fn,響應式地偵聽 fn 的返回值,當值改變時呼叫回撥函式。fn 接收 store 的 state 作為第一個引數,其 getter 作為第二個引數;
第二個引數為一個可選的物件參數列示 ,類似於vue的watch的回撥函式,表示新舊值。
當我們不想監聽時,可以透過定義變數接收該方法的返回值函式,呼叫該函式即可停止監聽。
優點:我們可以監聽我們某個特定需要的值,並非常方便的類似vue檔案中那樣拿到新舊變化值
弊端:當我們需要知道很多的值的變更情況時就得寫大量的監聽方法(可以考慮封裝成方法或類)
用法示例:
/* eslint-disable */ import store from "../store/index"; const watchFun = store.watch( state => state.pathName, (newValue, oldValue) => { console.log("search string is changing"); console.log("rd: newValue", newValue); console.log("rd: oldValue", oldValue); } ); setTimeout(() => { watchFun(); }, 10000);
在相應的js檔案引入store
呼叫store的watch例項方法,第一個函式引數返回一個需要監聽的state中的值(比如我想監聽vuex中的pathName的變化情況,就返回該值)
第二個引數同vue的watch,接收2個引數代表新舊值
透過變數watchFun接收watch的返回值,呼叫該方法會停止監聽
如上,就是如何在js等非vue檔案中監聽vuex資料的變化方式。
就如文中提到的缺點,當資料量過大時,寫多次監聽閒的不友好,可以考慮訂閱mutation的方式管理大量資料。
相關推薦:《》
以上就是vue中如何監聽vuex中的資料變化的詳細內容,更多請關注php中文網其它相關文章!
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/1806/viewspace-2827177/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- React和Vue中,是如何監聽變數變化的ReactVue變數
- vuex中的state在元件中如何監聽?Vue元件
- 如何在元件中監聽Vuex的資料變化元件Vue
- vue是如何監聽陣列變化的Vue陣列
- vue 監聽路由變化Vue路由
- Vue響應式原理-如何監聽Array的變化?Vue
- vue 如何在迴圈中 "監聽" 的繫結v-model資料Vue
- 對於單頁應用中如何監聽 URL 變化的思考
- 用這招監聽 Vue 的插槽變化Vue
- 在單頁應用中,如何優雅的監聽url的變化
- 如何監聽陣列變化?陣列
- Canal-監聽資料庫表的變化資料庫
- vue 中 watch如何監聽陣列或物件中的某個值?Vue陣列物件
- vue2-使用watch監聽路由的變化Vue路由
- 【JS】在連續性監聽事件中,監聽當前狀態是否變化JS事件
- 論如何監聽一個物件的變化物件
- vue 動態監聽視窗大小變化事件Vue事件
- Vue 中 MathJax 的使用與渲染的監聽 (下)Vue
- vue 父元件在created中傳值給子元件,子元件去監聽props變化Vue元件
- 11.2資料庫監聽的改變資料庫
- SQL Server CDC配合Kafka Connect監聽資料變化SQLServerKafka
- 為什麼Proxy可以優化vue的資料監聽機制優化Vue
- 論如何監聽物件某個屬性的變化物件
- vue3如何進行資料監聽watch/watchEffectVue
- 如何在 vuex action 中獲取到 vue 例項Vue
- javaWeb中的監聽器JavaWeb
- Laravel 中的事件監聽Laravel事件
- 微信小程式,實現 watch 屬性,監聽資料變化微信小程式
- 安卓監聽網路變化安卓
- MutationObserver監聽DOM變化示例Server
- localeStorage 當前標籤頁變化監聽不到,只能監聽不同標籤頁變化,自己寫方法監聽
- vue--vuex 中 Modules 詳解Vue
- 如何從MySQL中將變化的事件資料釋出到Kafka?MySql事件Kafka
- Web中的監聽器【Listener】Web
- Swift_監聽UITextField內容的變化SwiftUI
- 資料抽取中的CDC(變化資料捕獲)方式
- Spring中如何優雅的使用監聽器模式Spring模式
- Nuxt中如何使用Vuex-Store非同步獲取資料UXVue非同步