Web前端开发技术:Vuex状态管理

一、实验目的:

掌握Vuex实例对象的配置方法。
掌握Vuex API接口的使用方法。

二、实验要求:

了解Vuex的基本概念。
掌握Vuex 下载安装方法。
编写程序完成以下实验内容并上交实验报告

三、实验内容:

(一)实验基础

1、Vuex插件
组件状态即组件中的数据、功能等信息,使用Vuex对应用的所有组件的状态进行集中管理,使组件状态容易维护以及实现共享。
2、本次实验可以通过模仿借鉴如教材【例6-9】的实现,初步掌握Vuex相关知识及应用方法。

(二)实验题

请编程实现列表的增、删、改、查操作。

四、设计思路:

使用vuex存储数据,增加操作使用commit提交到mutation,push到列表;删除和修改都是将id传入到mutation,遍历数据找到对应的text,修改是将同时传入的text赋值给原变量;查找使用filter函数。

五、实验过程中遇到的问题及解决手段:

Commit提交多个参数,需要用大括号包围组成键值对传递。

六、程序源代码:




<!DOCTYPE html>
<html>
<head>
  <meta charset="UTF-8">
  <title>Document</title>
  <script src="vue.js"></script>
  <script src="vuex.js"></script>
</head>
<body>
<div id="app">
  <h2>列表查询</h2>
  <input type="text" v-model="id">
  <button @click="search">搜索</button>
  <p>搜索结果:{{ this.$store.getters.search }}</p>
  ID : <input type="text" v-model="add_id">
  Name :<input type="text" v-model="add_text">
  <button @click="m_add">增加</button>
  </p>
  删除ID为 : <input type="text" v-model="delete_id">
  <button @click="m_delete">删除</button>

  </p>
  修改ID : <input type="text" v-model="modify_id">
  为:<input type="text" v-model="modify_text">内容
  <button @click="m_modify">修改</button>
  <ul>
    <li v-for="item in this.$store.state.todos">{{ item }}</li>
  </ul>
</div>
<script>
  const store = new Vuex.Store({
    state: {
      todos: [
        { id: 1, text: '内容1' },
        { id: 2, text: '内容2' },
        { id: 3, text: '内容3' },
        { id: 4, text: '内容4' },
        { id: 5, text: '内容5' },
        { id: 6, text: '内容6' },
      ],
      id: 0
    },
    mutations: {
      search (state, id) {
        state.id = id
      },
      addlist (state,param) {
        console.log("addlist",add)
        state.todos.push({id:param.id,text:param.text})//添加到数组
      },
      delete(state,id){
        state.todos.map((v,i)=> {
          if(v.id == id){
            state.todos.splice(i,1)
          }
        })
      },
      modify(state,param){
        state.todos.map((v,i)=> {
          if(v.id == param.id){
            state.todos[i].text = param.text
          }
        })
      }
    },
    actions: {
    },
    getters: {
      search: state => {
        return state.todos.filter(todo => todo.id == state.id)
      },
    }
  })
  var vm = new Vue({
    el: '#app',
    data: { id: '' ,add_id:'',add_text:'',delete_id:"",modify_id:"",modify_text:""},
    store,
    methods: {
      //查找
      search () {
        this.$store.commit('search', this.id)
      },
      //增加
      m_add () {
        this.$store.commit('addlist',{id:this.add_id,text:this.add_text})//键值对传参
      },
      //删除
      m_delete(){
        this.$store.commit('delete', this.delete_id)
      },
      //修改
      m_modify(){
        this.$store.commit('modify', {id:this.modify_id,text:this.modify_text})
      }
    }
  })
</script>
</body>
</html>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

nickdlk

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值