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

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

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

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

1.編寫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: '紅樓夢'},{id: 4, name: '三國演義'}
  ]
}
export default new Vuex.Store({
  state
})

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

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

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

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

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

方式二是我們經(jīng)常用到的簡寫方式

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

3.利用mutation、action實現(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事件,實現(xiàn)增加和刪除的操作

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

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

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

這樣,我們在組件內(nèi)部這樣輸出

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

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

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

相關(guān)文章

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

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

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

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

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

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

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

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

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

    如何使用JS監(jiān)聽一個變量改變

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

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

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

    Vue3配置路由ERROR in [eslint]報錯問題及解決

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

    vue項目如何引入element?ui、iview和echarts

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

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

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

    vue報錯之exports is not defined問題的解決

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

最新評論

辽宁省| 兴城市| 大竹县| 汤阴县| 上蔡县| 大关县| 德兴市| 扶绥县| 梁河县| 桓仁| 宝坻区| 方正县| 安福县| 富平县| 图木舒克市| 炉霍县| 伽师县| 梁河县| 长海县| 肃南| 五大连池市| 南召县| 嵊泗县| 定南县| 梅河口市| 大连市| 罗平县| 进贤县| 龙游县| 丁青县| 抚顺市| 从化市| 房产| 平顶山市| 广灵县| 镇平县| 朝阳区| 武义县| 昆明市| 襄垣县| 宜黄县|