欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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淺析axios二次封裝與節(jié)流及防抖的實(shí)現(xiàn)

    Vue淺析axios二次封裝與節(jié)流及防抖的實(shí)現(xiàn)

    axios是基于promise的HTTP庫(kù),可以使用在瀏覽器和node.js中,它不是vue的第三方插件,vue-axios是axios集成到Vue.js的小包裝器,可以像插件一樣安裝使用:Vue.use(VueAxios,?axios),本文給大家介紹axios的二次封裝和節(jié)流與防抖
    2022-08-08
  • 在Vue項(xiàng)目中用fullcalendar制作日程表的示例代碼

    在Vue項(xiàng)目中用fullcalendar制作日程表的示例代碼

    這篇文章主要介紹了在Vue項(xiàng)目中用fullcalendar制作日程表,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-08-08
  • Vue Router初始化路由信息詳解

    Vue Router初始化路由信息詳解

    這篇文章主要為大家詳細(xì)介紹了Vue Router初始化路由信息的相關(guān)知識(shí),文中的示例代碼講解詳細(xì),具有一定的借鑒價(jià)值,感興趣的小伙伴可以了解一下
    2023-11-11
  • vue基礎(chǔ)之data存儲(chǔ)數(shù)據(jù)及v-for循環(huán)用法示例

    vue基礎(chǔ)之data存儲(chǔ)數(shù)據(jù)及v-for循環(huán)用法示例

    這篇文章主要介紹了vue基礎(chǔ)之data存儲(chǔ)數(shù)據(jù)及v-for循環(huán)用法,結(jié)合實(shí)例形式分析了vue.js使用data存儲(chǔ)數(shù)據(jù)、讀取數(shù)據(jù)及v-for遍歷數(shù)據(jù)相關(guān)操作技巧,需要的朋友可以參考下
    2019-03-03
  • 帶你了解前端的幾種包管理器(npm/pnpm等)

    帶你了解前端的幾種包管理器(npm/pnpm等)

    隨著前端工程化的應(yīng)用越來(lái)越廣,插件和包的管理也逐漸衍生出很多的管理器,常見(jiàn)的幾種包管理器如:npm、cnpm、yarn、pnpm,那你知道這些管理器之間有哪些區(qū)別嗎?我們一起來(lái)逐個(gè)認(rèn)識(shí)下它們
    2023-04-04
  • vue做網(wǎng)頁(yè)開(kāi)場(chǎng)視頻的實(shí)例代碼

    vue做網(wǎng)頁(yè)開(kāi)場(chǎng)視頻的實(shí)例代碼

    這篇文章主要介紹了vue做網(wǎng)頁(yè)開(kāi)場(chǎng)視頻的實(shí)例代碼,需要的朋友可以參考下
    2017-10-10
  • Vue Promise的axios請(qǐng)求封裝詳解

    Vue Promise的axios請(qǐng)求封裝詳解

    這篇文章主要介紹了Vue Promise的axios請(qǐng)求封裝詳解,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-08-08
  • Vue中對(duì)拿到的數(shù)據(jù)進(jìn)行A-Z排序的實(shí)例

    Vue中對(duì)拿到的數(shù)據(jù)進(jìn)行A-Z排序的實(shí)例

    今天小編就為大家分享一篇Vue中對(duì)拿到的數(shù)據(jù)進(jìn)行A-Z排序的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-09-09
  • vue3錨點(diǎn)定位兩種實(shí)現(xiàn)方式示例

    vue3錨點(diǎn)定位兩種實(shí)現(xiàn)方式示例

    這篇文章主要給大家介紹了關(guān)于vue3錨點(diǎn)定位兩種實(shí)現(xiàn)的相關(guān)資料,說(shuō)到錨點(diǎn)定位,很多人第一時(shí)間會(huì)想到 a標(biāo)簽,但是a標(biāo)簽實(shí)現(xiàn)的錨點(diǎn)定位并不是那么的完美,需要的朋友可以參考下
    2023-07-07
  • vue項(xiàng)目配置env的方法步驟

    vue項(xiàng)目配置env的方法步驟

    在vue項(xiàng)目中env是全局配置文件,可以存儲(chǔ)不同環(huán)境下的變量,下面這篇文章主要給大家介紹了關(guān)于vue項(xiàng)目配置env的方法步驟,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-04-04

最新評(píng)論