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.ajax传递中文参数的解决方法
May 28 Javascript
JavaScript中return false的用法
Mar 12 Javascript
SpringMVC框架下JQuery传递并解析Json格式的数据是如何实现的
Dec 10 Javascript
深入理解(function(){... })();
Aug 16 Javascript
javascript cookie用法基础教程(概念,设置,读取及删除)
Sep 20 Javascript
JS数组操作之增删改查的简单实现
Aug 21 Javascript
基于vue的换肤功能的示例代码
Oct 10 Javascript
nginx配置React静态页面的方法教程
Nov 03 Javascript
原生JS实现的双色球功能示例
Feb 02 Javascript
JS使用Date对象实时显示当前系统时间简单示例
Aug 23 Javascript
VUE 组件转换为微信小程序组件的方法
Nov 06 Javascript
Javascript 解构赋值详情
Nov 17 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
IP138 IP地址查询小偷实现代码
2010/02/15 PHP
采集邮箱的php代码(抓取网页中的邮箱地址)
2012/07/17 PHP
yii2.0框架使用 beforeAction 防非法登陆的方法分析
2019/09/11 PHP
js对象的构造和继承实现代码
2010/12/05 Javascript
JavaScript 的继承
2011/10/01 Javascript
js循环改变div颜色具体方法
2013/06/25 Javascript
jquery自动填充勾选框即把勾选框打上true
2014/03/24 Javascript
javascript实现百度地图鼠标滑动事件显示、隐藏
2015/04/02 Javascript
jquery实现手风琴效果
2015/11/20 Javascript
JS中setTimeout的巧妙用法前端函数节流
2016/03/24 Javascript
AngularJS ng-bind-html 指令详解及实例代码
2016/07/30 Javascript
jQuery点击弹出层弹出模态框点击模态框消失代码分享
2017/01/21 Javascript
基于javascript实现最简单选项卡切换
2017/02/01 Javascript
js 函数式编程学习笔记
2017/03/25 Javascript
Bootstrap响应式表格详解
2017/05/23 Javascript
three.js中文文档学习之如何本地运行详解
2017/11/20 Javascript
Vue.js获取被选择的option的value和text值方法
2018/08/24 Javascript
Python中time模块和datetime模块的用法示例
2016/02/28 Python
Python读取excel指定列生成指定sql脚本的方法
2018/11/28 Python
python将txt等文件中的数据读为numpy数组的方法
2018/12/22 Python
Python设计模式之策略模式实例详解
2019/01/21 Python
在Python文件中指定Python解释器的方法
2019/02/18 Python
pytorch在fintune时将sequential中的层输出方法,以vgg为例
2019/08/20 Python
python3读取csv文件任意行列代码实例
2020/01/13 Python
解决Python3.8用pip安装turtle-0.0.2出现错误问题
2020/02/11 Python
美国旅游网站:Tours4Fun
2017/02/17 全球购物
国贸专业的职业规划范文
2014/01/23 职场文书
大学生学年自我鉴定
2014/02/10 职场文书
水电工岗位职责
2014/02/12 职场文书
高中毕业生登记表自我鉴定范文
2014/03/18 职场文书
环境保护建议书
2014/08/26 职场文书
小学运动会宣传稿
2015/07/23 职场文书
主婚人致辞精选
2015/07/28 职场文书
公司老总年会致辞
2015/07/30 职场文书
家属联谊会致辞
2015/07/31 职场文书
用Python爬取英雄联盟的皮肤详细示例
2021/12/06 Python