Vuex实现数据增加和删除功能


Posted in Javascript onNovember 11, 2019

首先,我们要安装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
<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';//首先在组件内引入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
<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派发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的作用就在这里

以上这篇Vuex实现数据增加和删除功能就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
JQuery 构建客户/服务分离的链接模型中Table中的排序分析
Jan 22 Javascript
JS事件Event元素(兼容IE,Firefox,Chorme)
Nov 01 Javascript
jQuery学习之prop和attr的区别示例介绍
Nov 15 Javascript
淘宝网提供的国内NPM镜像简介和使用方法
Apr 17 Javascript
jQuery学习笔记之toArray()
Jun 09 Javascript
javascript中返回顶部按钮的实现
May 05 Javascript
javascript阻止事件冒泡和浏览器的默认行为
Jan 21 Javascript
微信小程序 实现动态显示和隐藏某个控件
Apr 27 Javascript
JS获取动态添加元素的方法详解
Jul 31 Javascript
原生JS无缝滑动轮播图
Oct 22 Javascript
Node如何后台数据库使用增删改查功能
Nov 21 Javascript
JavaScript实现好看的跟随彩色气泡效果
Feb 06 Javascript
VUE:vuex 用户登录信息的数据写入与获取方式
Nov 11 #Javascript
vue 实现通过vuex 存储值 在不同界面使用
Nov 11 #Javascript
使用vuex存储用户信息到localStorage的实例
Nov 11 #Javascript
JS中比较两个Object数组是否相等方法实例
Nov 11 #Javascript
vue把输入框的内容添加到页面的实例讲解
Nov 11 #Javascript
vue与django集成打包的实现方法
Nov 11 #Javascript
微信小程序监听用户登录事件的实现方法
Nov 11 #Javascript
You might like
PHP中的array数组类型分析说明
2010/07/27 PHP
PHP实现获取文件后缀名的几种常用方法
2015/08/08 PHP
PHP十六进制颜色随机生成器功能示例
2017/07/24 PHP
Prototype使用指南之base.js
2007/01/10 Javascript
利用ASP发送和接收XML数据的处理方法与代码
2007/11/13 Javascript
Mootools 1.2教程 Fx.Morph、Fx选项和Fx事件
2009/09/15 Javascript
jquery插件制作教程 txtHover
2012/08/17 Javascript
Jquery选择子控件&quot;大于号&quot;和&quot; &quot;区别介绍及使用示例
2013/06/25 Javascript
jQuery替换字符串(实例代码)
2013/11/13 Javascript
JQuery简单实现锚点链接的平滑滚动
2015/05/03 Javascript
JavaScript中的Math.SQRT1_2属性使用简介
2015/06/14 Javascript
JavaScript正则表达式中的ignoreCase属性使用详解
2015/06/16 Javascript
jquery插件uploadify实现带进度条的文件批量上传
2015/12/13 Javascript
vue.js+boostrap项目实践(案例详解)
2016/09/21 Javascript
jQuery.uploadify文件上传组件实例讲解
2016/09/23 Javascript
Vue.js实现拖放效果的实例
2016/09/30 Javascript
JavaScript反弹动画效果的实现代码
2017/07/13 Javascript
微信小程序实现点击按钮修改view标签背景颜色功能示例【附demo源码下载】
2017/12/06 Javascript
switchery按钮的使用方法
2017/12/18 Javascript
新手快速入门JavaScript装饰者模式与AOP
2019/06/24 Javascript
JS跨浏览器解析XML应用过程详解
2020/10/16 Javascript
树莓派中python获取GY-85九轴模块信息示例
2013/12/05 Python
用Python进行行为驱动开发的入门教程
2015/04/23 Python
详解基于django实现的webssh简单例子
2018/07/17 Python
python 调用有道api接口的方法
2019/01/03 Python
Python中函数的基本定义与调用及内置函数详解
2019/05/13 Python
Python实现投影法分割图像示例(一)
2020/01/17 Python
浅谈HTML5 Web Worker的使用
2018/01/05 HTML / CSS
加拿大国民体育购物网站:National Sports
2018/11/04 全球购物
财务会计人员岗位职责
2013/11/30 职场文书
交通安全寄语大全
2014/04/08 职场文书
文秘专业应届生求职信
2014/05/26 职场文书
酒店管理求职信
2014/06/09 职场文书
关于运动会广播稿200字
2014/10/08 职场文书
护士2015年终工作总结
2015/04/29 职场文书
Vue ECharts实现机舱座位选择展示功能
2022/05/15 Vue.js