list vue 添加数据方法_Vuex实现数据增加和删除功能

首先,我们要安装vuex,执行命令yarn add vuex

1.编写state数据

//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.组件调用state数据进行展示

我们的目的是把state数据赋值给vue组件进行使用,其实,这里有两种常用方法

//Home.vue

{ {item.name} }

//方法一:通过computed的计算属性直接赋值,computed属性可以在输出前,对data中的值进行改变,我们就利用这种特性把state值赋值给vue模板中的data进行使用

computed: {

bookList( ) {

return this.$store.state.bookList;

}

}

//方法二:通过mapState的对象来赋值

import { mapState } from 'vuex';//首先在组件内引入mapState

computed: {

...mapState(['bookList'])

}

方式二是我们经常用到的简写方式

基本的数据获取,就是这样的实现,此时我们看页面,就会循环展示state中的bookList数据

3.利用mutation、action实现增加删除数据

//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

ADD

{ {item.name} }

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派发mutation事件,实现增加和删除的操作

这里有一个很重要的概念: mutation是唯一修改state的方法,而action是操作mutation触发commit修改state的方式

4.使用getters过滤state数据

//vuex/index.js

const getters = {

newBookList:function(state){

return JSON.parse(JSON.stringify(state.bookList)).splice(0,1)

}

}

这样,我们在组件内部这样输出

mounted( ) {

console.log(this.$store.getters.newBookList)

console.log(this.bookList)

}

我们通过JSON拷贝,既可以得到过滤之后的state数据(1条数据),也可以得到原state数据(4条数据),个人理解,getters的作用就在这里

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值