最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

實(shí)現(xiàn)vuex與組件data之間的數(shù)據(jù)同步更新方式

 更新時(shí)間:2019年11月12日 08:43:28   作者:EsunR  
今天小編就為大家分享一篇實(shí)現(xiàn)vuex與組件data之間的數(shù)據(jù)同步更新方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧

問題

我們都知道,在Vue組件中,data部分的數(shù)據(jù)與視圖之間是可以同步更新的,假如我們更新了data中的數(shù)據(jù),那么視圖上的數(shù)據(jù)就會(huì)被同步更新,這就是Vue所謂的數(shù)據(jù)驅(qū)動(dòng)視圖思想。

當(dāng)我們使用Vuex時(shí),我們也可以通過在視圖上通過 $store.state.[DataKey] 來獲取Vuex中 state 的數(shù)據(jù),且當(dāng) state 中的數(shù)據(jù)發(fā)生變化時(shí),視圖上的數(shù)據(jù)也是可以同步更新的,這似乎看起來很順利。

但是當(dāng)我們想要通過將 state 中的數(shù)據(jù)綁定到Vue組件的 data 上,然后再在視圖上去調(diào)用 data ,如下:

<template>
 <div>{{userInfo}}</div> 
</template>

<script>
export default {
 data() {
 return {
  userInfo: this.$store.state.userInfo;
 };
 }
};
</script>

那么我們就會(huì)發(fā)現(xiàn),當(dāng)我們?nèi)ジ淖?state 中的 userInfo 時(shí),視圖是不會(huì)更新的,相對(duì)應(yīng)的 data 中的 userInfo 也不會(huì)被更改,因?yàn)檫@種調(diào)用方式是非常規(guī)的。

當(dāng)Vue在組件加載完畢前,會(huì)將 data 中的所有數(shù)據(jù)初始化完畢,之后便只會(huì)被動(dòng)改變數(shù)據(jù)。然而等組件數(shù)據(jù)初始化完畢之后,即使 state 中的數(shù)據(jù)發(fā)生了改變, data 中的數(shù)據(jù)與其并非存在綁定關(guān)系,data 僅僅在數(shù)據(jù)初始化階段去調(diào)用了 state 中的數(shù)據(jù),所以 data 中的數(shù)據(jù)并不會(huì)根據(jù) state 中的數(shù)據(jù)發(fā)生改變而改變。

所以如果想在視圖上實(shí)現(xiàn)與 state 中的數(shù)據(jù)保持同步更新的話,只能采用以下方式:

<template>
 <div>{{$store.state.userInfo}}</div> 
</template>

解決

那么如果我們必須想要在 data 上綁定 state 中的數(shù)據(jù),讓 state 去驅(qū)動(dòng) data 發(fā)生改變,那我們?cè)撊绾巫瞿兀?/p>

我們可以嘗試以下兩中方法:

1. 使用computed屬性去獲取state中的數(shù)據(jù)

這種方式其實(shí)并非是去調(diào)用了 data 中的數(shù)據(jù),而是為組件添加了一個(gè)計(jì)算 computed 屬性。computed 通常用于復(fù)雜數(shù)據(jù)的計(jì)算,它實(shí)際上是一個(gè)函數(shù),在函數(shù)內(nèi)部進(jìn)行預(yù)算后,返回一個(gè)運(yùn)算結(jié)果,同時(shí)它有一個(gè)重要的特性:當(dāng)在它內(nèi)部需要進(jìn)行預(yù)算的數(shù)據(jù)發(fā)生改變后,它重新進(jìn)行數(shù)據(jù)運(yùn)算并返回結(jié)果。 所以,我們可以用 computed 去返回 state 中的數(shù)據(jù),當(dāng) state 中的數(shù)據(jù)發(fā)生改變后,computed 會(huì)感知到,并重新獲取 state 中的數(shù)據(jù),并返回新的值。

<template>
 <div>{{userInfo}}</div> 
</template>

<script>
export default {
 computed: {
 userInfo(){
  return this.$store.state.userInfo;
 }
 }
};
</script>

2. 使用watch監(jiān)聽state中的數(shù)據(jù)

這種方式就很好理解了,就是通過組件的 watch 屬性,為 state 中的某一項(xiàng)數(shù)據(jù)添加一個(gè)監(jiān)聽,當(dāng)數(shù)據(jù)發(fā)生改變的時(shí)候觸發(fā)監(jiān)聽事件,在監(jiān)聽事件內(nèi)部中去更改 data 中對(duì)應(yīng)的數(shù)據(jù),即可變相的讓 data 中的數(shù)據(jù)去根據(jù) state 中的數(shù)據(jù)發(fā)生改變而改變。

<template>
 <div>{{userInfo}}</div> 
</template>

<script>
export default {
 data() {
 return {
  userInfo: this.$store.state.userInfo;
 };
 },
 watch: {
 "this.$store.state.userInfo"() {
  this.userInfo = this.$store.getters.getUserInfo; // 按照規(guī)范在這里應(yīng)該去使用getters來獲取數(shù)據(jù)
 }
 }
};
</script>

以上這篇實(shí)現(xiàn)vuex與組件data之間的數(shù)據(jù)同步更新方式就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • webstorm+vue初始化項(xiàng)目的方法

    webstorm+vue初始化項(xiàng)目的方法

    今天小編就為大家分享一篇webstorm+vue初始化項(xiàng)目的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2018-10-10
  • vue中輸入框事件的使用及數(shù)值校驗(yàn)方式

    vue中輸入框事件的使用及數(shù)值校驗(yàn)方式

    這篇文章主要介紹了vue中輸入框事件的使用及數(shù)值校驗(yàn)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-08-08
  • vue學(xué)習(xí)筆記之作用域插槽實(shí)例分析

    vue學(xué)習(xí)筆記之作用域插槽實(shí)例分析

    這篇文章主要介紹了vue學(xué)習(xí)筆記之作用域插槽,結(jié)合實(shí)例形式分析了vue.js作用域插槽基本使用方法及操作注意事項(xiàng),需要的朋友可以參考下
    2020-02-02
  • 使用Vue?CLI配置代碼壓縮、加密和混淆功能示例代碼

    使用Vue?CLI配置代碼壓縮、加密和混淆功能示例代碼

    這篇文章主要介紹了使用Vue?CLI配置代碼壓縮、加密和混淆功能,通過配置 vue.config.js 文件,我們可以使用 Vue CLI 輕松實(shí)現(xiàn)對(duì) Vue 應(yīng)用程序代碼的壓縮、加密和混淆,需要的朋友可以參考下
    2023-06-06
  • vue使用element-ui實(shí)現(xiàn)表單驗(yàn)證

    vue使用element-ui實(shí)現(xiàn)表單驗(yàn)證

    這篇文章主要為大家詳細(xì)介紹了vue使用element-ui實(shí)現(xiàn)表單驗(yàn)證,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-12-12
  • Vue組件與生命周期詳細(xì)講解

    Vue組件與生命周期詳細(xì)講解

    Vue的生命周期就是vue實(shí)例從創(chuàng)建到銷毀的全過程,也就是new Vue() 開始就是vue生命周期的開始。Vue 實(shí)例有?個(gè)完整的?命周期,也就是從開始創(chuàng)建、初始化數(shù)據(jù)、編譯模版、掛載Dom -> 渲染、更新 -> 渲染、卸載 等?系列過程,稱這是Vue的?命周期
    2022-10-10
  • Vue使用fabric.js實(shí)現(xiàn)局部截圖與大圖預(yù)覽功能

    Vue使用fabric.js實(shí)現(xiàn)局部截圖與大圖預(yù)覽功能

    這篇文章主要為大家詳細(xì)介紹了Vue如何使用fabric.js實(shí)現(xiàn)局部截圖與el-image-viewer大圖預(yù)覽功能,文中的示例代碼講解詳細(xì),感興趣的可以了解下
    2024-02-02
  • 關(guān)于應(yīng)用UI組件的移動(dòng)端適配方式

    關(guān)于應(yīng)用UI組件的移動(dòng)端適配方式

    這篇文章主要介紹了關(guān)于應(yīng)用UI組件的移動(dòng)端適配方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-09-09
  • 關(guān)于vue的路由模式及修改方法

    關(guān)于vue的路由模式及修改方法

    這篇文章主要介紹了關(guān)于vue的路由模式及修改方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-03-03
  • vue動(dòng)態(tài)路由刷新失效以及404頁面處理辦法

    vue動(dòng)態(tài)路由刷新失效以及404頁面處理辦法

    作為一個(gè)前端新手,項(xiàng)目中遇到權(quán)限處理時(shí),通常會(huì)采用動(dòng)態(tài)添加路由的方法來實(shí)現(xiàn),下面這篇文章主要給大家介紹了關(guān)于vue動(dòng)態(tài)路由刷新失效以及404頁面處理辦法的相關(guān)資料,需要的朋友可以參考下
    2023-11-11

最新評(píng)論

瑞安市| 乌兰浩特市| 曲沃县| 农安县| 淮安市| 靖西县| 财经| 屯门区| 凌源市| 舒兰市| 昌都县| 宜川县| 靖安县| 闵行区| 大厂| 平利县| 东源县| 乌兰察布市| 越西县| 太白县| 黄山市| 比如县| 乌鲁木齐市| 汶上县| 新龙县| 祁连县| 桃园市| 根河市| 临清市| 祁东县| 邻水| 永川市| 江永县| 龙陵县| 安义县| 保山市| 即墨市| 临邑县| 元江| 亳州市| 黄骅市|