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

Vuex實(shí)現(xiàn)數(shù)據(jù)增加和刪除功能

 更新時(shí)間:2019年11月11日 16:12:41   作者:高級(jí)前端工程師Vue方向  
今天小編就為大家分享一篇Vuex實(shí)現(xiàn)數(shù)據(jù)增加和刪除功能,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧

首先,我們要安裝vuex,執(zhí)行命令yarn add vuex

1.編寫(xiě)state數(shù)據(jù)

//vuex/index.js
import Vue from 'vue';
import Vuex from 'vuex';
Vue.use(Vuex);
const state = {
  bookList: [
   {id: 1, name: '西游記'},{id: 2, name: '水滸傳'},
   {id: 3, name: '紅樓夢(mèng)'},{id: 4, name: '三國(guó)演義'}
  ]
}
export default new Vuex.Store({
  state
})

2.組件調(diào)用state數(shù)據(jù)進(jìn)行展示

我們的目的是把state數(shù)據(jù)賦值給vue組件進(jìn)行使用,其實(shí),這里有兩種常用方法

//Home.vue
<p v-for='item in bookList'>{ {item.name} }<p/>

//方法一:通過(guò)computed的計(jì)算屬性直接賦值,computed屬性可以在輸出前,對(duì)data中的值進(jìn)行改變,我們就利用這種特性把state值賦值給vue模板中的data進(jìn)行使用
computed: {
  bookList( ) {
   return this.$store.state.bookList;
  }
}

//方法二:通過(guò)mapState的對(duì)象來(lái)賦值
import { mapState } from 'vuex';//首先在組件內(nèi)引入mapState
computed: {
  ...mapState(['bookList'])
}

方式二是我們經(jīng)常用到的簡(jiǎn)寫(xiě)方式

基本的數(shù)據(jù)獲取,就是這樣的實(shí)現(xiàn),此時(shí)我們看頁(yè)面,就會(huì)循環(huán)展示state中的bookList數(shù)據(jù)

3.利用mutation、action實(shí)現(xiàn)增加刪除數(shù)據(jù)

//vuex/index.js
const mutations = {
  ADD_ITEM(state,item) {
   state.bookList.push(item)
  }
}
const mutations = {
  ADD_ITEM(state,item) {
   state.bookList.push(item)
  },
  DEL_ITEM(state,id) {
   state.bookList.map((v,i)=> {
     if(v.id == id){
      state.bookList.splice(i,1)
     }
   })
  }
}
const actions = {
  add_item({commit},item) {
   commit('ADD_ITEM',item)
  },
  del_item({commit},id) {
   commit('DEL_ITEM',id)
  }
}
export default new Vuex.Store({
  state,mutations,actions
})
//Home.vue
<button @click='add_item'>ADD</button>
<p v-for='item in bookList' @click='delItem(item.id)'>{ {item.name} }<p/>

import { mapState, } from 'vuex';

computed: {
  ...mapState(['bookList'])
}
methods: {
  add_item() {
   let newObject = {id:this.bookList.length,name:'葫蘆娃'}
   this.$store.dispatch('add_item',newObject)
  },
  delItem(id) {
   this.$store.dispatch('del_item',id)
  }
}

利用action派發(fā)mutation事件,實(shí)現(xiàn)增加和刪除的操作

這里有一個(gè)很重要的概念: mutation是唯一修改state的方法,而action是操作mutation觸發(fā)commit修改state的方式

4.使用getters過(guò)濾state數(shù)據(jù)

//vuex/index.js
const getters = {
  newBookList:function( state ){
   return JSON.parse(JSON.stringify(state.bookList)).splice(0,1)
  }
}

這樣,我們?cè)诮M件內(nèi)部這樣輸出

mounted( ) {
  console.log(this.$store.getters.newBookList)
  console.log(this.bookList)
}

我們通過(guò)JSON拷貝,既可以得到過(guò)濾之后的state數(shù)據(jù)(1條數(shù)據(jù)),也可以得到原state數(shù)據(jù)(4條數(shù)據(jù)),個(gè)人理解,getters的作用就在這里

以上這篇Vuex實(shí)現(xiàn)數(shù)據(jù)增加和刪除功能就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • vue使用Echarts設(shè)置數(shù)據(jù)無(wú)效問(wèn)題記錄及解決方法

    vue使用Echarts設(shè)置數(shù)據(jù)無(wú)效問(wèn)題記錄及解決方法

    這篇文章主要介紹了vue使用Echarts設(shè)置數(shù)據(jù)無(wú)效問(wèn)題記錄,本文通過(guò)場(chǎng)景分析給大家分享解決方法,需要的朋友可以參考下
    2022-08-08
  • vite環(huán)境變量.env文件的配置及使用

    vite環(huán)境變量.env文件的配置及使用

    在Vite中,我們可以使用環(huán)境變量來(lái)管理不同環(huán)境下的配置,本文主要介紹了vite環(huán)境變量.env文件的配置及使用,具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-06-06
  • 用element的upload組件實(shí)現(xiàn)多圖片上傳和壓縮的示例代碼

    用element的upload組件實(shí)現(xiàn)多圖片上傳和壓縮的示例代碼

    這篇文章主要介紹了用element的upload組件實(shí)現(xiàn)多圖片上傳和壓縮的示例代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-02-02
  • vue3.0在子組件中觸發(fā)的父組件函數(shù)方式

    vue3.0在子組件中觸發(fā)的父組件函數(shù)方式

    這篇文章主要介紹了vue3.0在子組件中觸發(fā)的父組件函數(shù)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-04-04
  • 如何使用JS監(jiān)聽(tīng)一個(gè)變量改變

    如何使用JS監(jiān)聽(tīng)一個(gè)變量改變

    在JS編程中如果能監(jiān)測(cè)變量的內(nèi)容,當(dāng)變量值發(fā)生變化時(shí),實(shí)時(shí)發(fā)出通知,這定是一項(xiàng)很有用的功能,下面這篇文章主要給大家介紹了關(guān)于如何使用JS監(jiān)聽(tīng)一個(gè)變量改變的相關(guān)資料,需要的朋友可以參考下
    2023-05-05
  • element ui table 增加篩選的方法示例

    element ui table 增加篩選的方法示例

    這篇文章主要介紹了element ui table 增加篩選的方法示例,詳細(xì)的介紹了如何添加規(guī)則內(nèi)容,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-11-11
  • Vue3配置路由ERROR in [eslint]報(bào)錯(cuò)問(wèn)題及解決

    Vue3配置路由ERROR in [eslint]報(bào)錯(cuò)問(wèn)題及解決

    這篇文章主要介紹了Vue3配置路由ERROR in [eslint]報(bào)錯(cuò)問(wèn)題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-10-10
  • vue項(xiàng)目如何引入element?ui、iview和echarts

    vue項(xiàng)目如何引入element?ui、iview和echarts

    這篇文章主要介紹了vue項(xiàng)目如何引入element?ui、iview和echarts,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-09-09
  • Vue3+Three.js實(shí)現(xiàn)為模型添加點(diǎn)擊事件

    Vue3+Three.js實(shí)現(xiàn)為模型添加點(diǎn)擊事件

    本文主要介紹了如何在Vue3和Three.js環(huán)境中為模型添加點(diǎn)擊事件監(jiān)聽(tīng),具體方法是利用Three.js的Vector2和Raycaster,首先,創(chuàng)建一個(gè)Vector2對(duì)象來(lái)獲取鼠標(biāo)位置;然后,創(chuàng)建一個(gè)Raycaster對(duì)象來(lái)投射光線
    2024-10-10
  • vue報(bào)錯(cuò)之exports is not defined問(wèn)題的解決

    vue報(bào)錯(cuò)之exports is not defined問(wèn)題的解決

    這篇文章主要介紹了vue報(bào)錯(cuò)之exports is not defined問(wèn)題的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-07-07

最新評(píng)論

南汇区| 屯昌县| 区。| 阳春市| 泗洪县| 胶州市| 旺苍县| 静乐县| 开远市| 高碑店市| 蓝山县| 岑巩县| 珲春市| 伊川县| 寿宁县| 阜宁县| 景东| 云浮市| 恩施市| 宁远县| 乐东| 阳西县| 莫力| 仙居县| 红河县| 金昌市| 定日县| 新巴尔虎左旗| 偃师市| 米林县| 安塞县| 台安县| 荥经县| 波密县| 北安市| 武川县| 长泰县| 察哈| 阿瓦提县| 兴和县| 桂阳县|