最新国产好看的视频,伊人天堂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ì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧

問(wèn)題

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

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

但是當(dāng)我們想要通過(guò)將 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)聽(tīng)state中的數(shù)據(jù)

這種方式就很好理解了,就是通過(guò)組件的 watch 屬性,為 state 中的某一項(xiàng)數(shù)據(jù)添加一個(gè)監(jiān)聽(tīng),當(dāng)數(shù)據(jù)發(fā)生改變的時(shí)候觸發(fā)監(jiān)聽(tīng)事件,在監(jiān)聽(tīng)事件內(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來(lái)獲取數(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ì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    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配置代碼壓縮、加密和混淆功能,通過(guò)配置 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)建到銷毀的全過(guò)程,也就是new Vue() 開(kāi)始就是vue生命周期的開(kāi)始。Vue 實(shí)例有?個(gè)完整的?命周期,也就是從開(kāi)始創(chuàng)建、初始化數(shù)據(jù)、編譯模版、掛載Dom -> 渲染、更新 -> 渲染、卸載 等?系列過(guò)程,稱這是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頁(yè)面處理辦法

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

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

最新評(píng)論

吴忠市| 桐梓县| 金门县| 安塞县| 辉南县| 涿鹿县| 视频| 白河县| 邳州市| 冀州市| 望谟县| 荆州市| 克东县| 富阳市| 鄱阳县| 灵武市| 徐汇区| 隆德县| 阳西县| 麻城市| 永安市| 图木舒克市| 新平| 凌海市| 楚雄市| 新邵县| 台中县| 社旗县| 宁德市| 伊金霍洛旗| 漠河县| 锡林郭勒盟| 思茅市| 盱眙县| 长沙市| 崇礼县| 兴宁市| 句容市| 遵义县| 汉中市| 西盟|