状态管理Vuex

官网:Vuex 是什么? | Vuex (vuejs.org)icon-default.png?t=N7T8https://v3.vuex.vuejs.org/zh/

创建一个vue2的新项目名为vuex-demo,安装命令 npm install vuex@3

新建index.js

import Vue from 'vue'
import Vuex from 'vuex'

Vue.use(Vuex)

const store = new Vuex.Store({
    state: {
      count: 0
    },
    mutations: {
      increment (state) {
        state.count++
      }
    }
  })

export default store

修改main.js,注入

import Vue from 'vue'
import App from './App.vue'
import store from './store'

Vue.config.productionTip = false

new Vue({
  render: h => h(App),
  store: store
}).$mount('#app')

HelloWorld.vue修改

<template>
  <div class="hello">
  {{ this.$store.state.count }}
  <button @click="add">+1</button>
  </div>
</template>

<script>
export default {
  name: 'HelloWorld',
  methods: {
    add() {
      this.$store.commit('increment') // commit mutation  
    }
  } 
}
</script>

<style scoped>  

</style>

App.vue修改

<template>
  <div id="app">
    <HelloWorld/>
  </div>
</template>

<script>
import HelloWorld from './components/HelloWorld.vue'

export default {
  name: 'App',
  components: {
    HelloWorld
  }
}
</script>

<style>
#app {
  font-family: Avenir, Helvetica, Arial, sans-serif;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  text-align: center;
  color: #2c3e50;
  margin-top: 60px;
}
</style>

运行

 修改HelloWorld.vue

<template>
  <div class="hello">
  <!-- {{ this.$store.state.count }} -->
  {{ count }}
  <button @click="add">+1</button>
  </div>
</template>

<script>
export default {
  name: 'HelloWorld',
  computed: {
    count() {
      return this.$store.state.count // access state
    }
  },
  methods: {
    add() {
      this.$store.commit('increment') // commit mutation  
    }
  } 
}
</script>

<style scoped>  

</style>

 刷新,效果不变

 修改HelloWorld.vue,效果还是不变 

<template>
  <div class="hello">
  <!-- {{ this.$store.state.count }} -->
  {{ count }}
  <button @click="add">+1</button>
  </div>
</template>

<script>

import { mapState } from 'vuex';

export default {
  name: 'HelloWorld',
  computed:mapState(['count']),

  // computed: {
  //   count() {
  //     return this.$store.state.count // access state
  //   }
  // },
  methods: {
    add() {
      this.$store.commit('increment') // commit mutation  
    }
  } 
}
</script>

<style scoped>  

</style>

修改index.js

import Vue from 'vue'
import Vuex from 'vuex'

Vue.use(Vuex)

const store = new Vuex.Store({
    state: {
      count: 0,
      todos: [
        { id: 1, text: '吃饭', done: true },
        { id: 2, text: '睡觉', done: false }
      ]
    },
    mutations: {
      increment (state) {
        state.count++
      }
    }
  })

export default store

修改HelloWorld.vue

<template>
  <div class="hello">
  <!-- {{ this.$store.state.count }} -->
  {{ count }}
  <button @click="add">+1</button>
  <ul>
    <li v-for="todo in todos" :key="todo.id">{{ todo.text }}</li>
  </ul>
  </div>
</template>

<script>

import { mapState } from 'vuex';

export default {
  name: 'HelloWorld',
  computed:mapState(['count','todos']),


  methods: {
    add() {
      this.$store.commit('increment') // commit mutation  
    }
  } 
}
</script>

<style scoped>  

</style>

 修改

 修改index.js

import Vue from 'vue'
import Vuex from 'vuex'

Vue.use(Vuex)

const store = new Vuex.Store({
    state: {
      count: 0,
      todos: [
        { id: 1, text: '吃饭', done: true },
        { id: 2, text: '睡觉', done: false }
      ]
    },
    mutations: {
      increment (state) {
        state.count++
      }
    },  
    getters: {
        doneTodos: state => {
            return state.todos.filter(todo => todo.done)
        }
    }
  })

export default store

 修改HelloWorld.vue

<template>
  <div class="hello">
  <!-- {{ this.$store.state.count }} -->
  {{ count }}
  <button @click="add">+1</button>
  <ul>
    <li v-for="todo in doneTodos" :key="todo.id">{{ todo.text }}</li>
  </ul>
  </div>
</template>

<script>

import { mapState,mapGetters} from 'vuex';

export default {
  name: 'HelloWorld',
  computed:{
...mapState(['count','todos']),
...mapGetters(['doneTodos'])
  methods: {
    add() {
      this.$store.commit('increment') // commit mutation  
    }
  } 
}
</script>

<style scoped>  

</style>

刷新

 修改index.js,每次加2

import Vue from 'vue'
import Vuex from 'vuex'

Vue.use(Vuex)

const store = new Vuex.Store({
    state: {
      count: 0,
      todos: [
        { id: 1, text: '吃饭', done: true },
        { id: 2, text: '睡觉', done: false }
      ]
    },
    mutations: {
      increment (state,n) {
        state.count += n
      }
    },  
    getters: {
        doneTodos: state => {
            return state.todos.filter(todo => todo.done)
        }
    }
  })

export default store

  修改HelloWorld.vue

<template>
  <div class="hello">
  <!-- {{ this.$store.state.count }} -->
  {{ count }}
  <button @click="add">+1</button>
  <ul>
    <li v-for="todo in doneTodos" :key="todo.id">{{ todo.text }}</li>
  </ul>
  </div>
</template>

<script>

import { mapState,mapGetters} from 'vuex';

export default {
  name: 'HelloWorld',
  // computed:mapState(['count','todos']),
  computed:{
...mapState(['count','todos']),
...mapGetters(['doneTodos'])
  },
  // computed: {
  //   count() {
  //     return this.$store.state.count // access state
  //   }
  // },
  methods: {
    add() {
      this.$store.commit('increment',2) // commit mutation  
    }
  } 
}
</script>

<style scoped>  

</style>

 刷新,每次加2

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/698134.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

PYQT + flask httpserver 服务器提供简单的MES服务

main.py import sys # 导入创建的文件模块 import test import dcservice from PyQt5.QtWidgets import QApplication, QMainWindowif __name__ __main__:app QApplication(sys.argv)MainWindow QMainWindow()ui test.Ui_MainWindow()ui.setupUi(MainWindow)MainWindow.sho…

vue中插槽的本质

定义slotCompoent.vue 组件 <template><slot></slot><slot nameslot1></slot><slot name"slot2" msg"hello"></slot> </template>使用组件&#xff1a; <slotComponent><p>默认的</p>…

用Python代码锁定Excel单元格以及行和列

Excel能够帮助用户高效地组织数据&#xff0c;还支持复杂的公式计算和数据分析。而随着团队协作的日益频繁&#xff0c;保护数据的准确性和完整性变得尤为重要。在Excel表格中&#xff0c;我们可以通过锁定特定的单元格或区域&#xff0c;防止对单元格内容进行随意修改&#xf…

Golang:使用时会遇到的错误及解决方法详解

Go语言使用时常常会遇到的一些错误及解决方法&#xff0c;文中的示例代码讲解详细&#xff0c;感兴趣的小伙伴可以了解一下 1、go: go.mod file not found in current directory or any parent directory go mod init name 2、Failed to build the application: main.go:4:2:…

Java网络通信实现

UDP UDPServer import java.io.IOException; import java.net.DatagramPacket; import java.net.DatagramSocket;public class UDPServer {public static void main(String[] args) throws IOException {System.out.println("UdpServer启动");// 创建upd套接字Data…

Java进阶_接口

接口的概念 在JAVA编程语言中是一个抽象类型&#xff0c;是抽象方法的集合&#xff0c;接口通常以interface来声明。一个类通过继承接口的方式&#xff0c;从而来继承接口的抽象方法。 接口并不是类&#xff0c;编写接口的方式和类很相似&#xff0c;但是它们属于不同的概念。类…

Bankless:为什么 AI 需要 Crypto 的技术?

原文标题&#xff1a;《Why AI Needs Crypto’s Values》 撰文&#xff1a;Arjun Chand&#xff0c;Bankless 编译&#xff1a;Chris&#xff0c;Techub News 原文来自香港Web3媒体&#xff1a;Techub News 人工智能革命的梦想一直是一把双刃剑。 释放人工智能的潜力可以解…

每日算法——归并排序

什么是归并排序 归并排序是一种分治算法。它将数组不断地分成两半&#xff0c;对每一半进行排序&#xff0c;然后再将排序好的两半合并起来。通过不断重复这个过程&#xff0c;最终得到完全排序的数组。 归并排序的注意点&#xff1a; 空间复杂度&#xff1a;归并排序需要额…

第1章Hello world 5/5:Rust/Java/C++实现Hello world代码优劣势对比:运行第一个程序

讲动人的故事,写懂人的代码 1.8 对比三种语言的Hello world代码特点和优劣势 艾极思又对比了三种语言的Hello world代码。 1.8.1 Rust的Hello world代码解读 让我们详细解释一下 Rust 这一个文件中的代码,并讨论为什么使用这些语法: 1.8.1.1 文件:main.rs fn main() …

(文章复现)低温环境下考虑电池寿命的微电网优化调度

参考文献&#xff1a; [1]丁佳昀,胡秦然,吴在军,等.低温环境下考虑电池寿命的微电网优化调度[J].中国电机工程学报,2024,44(10):3815-3824. 1.摘要 储能系统作为微电网重要组成部分&#xff0c;为微电网协调能量供需提供了解决方案。然而&#xff0c;在低温环境下&#xff0c…

《软件定义安全》之六:SDN和NFV安全实践

第6章 SDN和NFV安全实践 1.基于流的安全防护 1.1 DDoS检测清洗 DDoS检测清洗应用ADS APP的设计思路&#xff1a;借助安全控制平台中流相关的组件&#xff0c;从SDN控制器中获得相应的流量&#xff0c;并根据抗DDoS应用订阅的恶意流特征进行检测&#xff0c;发现恶意流量后&a…

最新thinkphp5内核全开源女神赢口红H5公众号版第五版(100%可经营)

最新thinkphp5内核全开源女神赢口红H5公众号版第五版&#xff08;100%可经营&#xff09; 搭建教程 1、程序为thinkPHP5开发 php版本要求5.6&#xff01;不支持虚拟主机&#xff01; 2、上传程序到您的根目录&#xff01;导入m213.sql文件&#xff01;修改数据库配置文件app…

使用docker-compose搭建达梦数据库主备集群

目录 1. Docker集群的搭建 2. 检查主备数据库 3. 主备集群的JDBC连接设置 1. Docker集群的搭建 达梦的镜像文件都是tar文件&#xff0c;通过docker load命令导入&#xff1a; docker load -i dm8_20240422_x86_rh6_64_rq_ent_8.1.3.140.tar 成功导入后&#xff0c;可看到…

Android程序设计课程教学解决方案

引言 随着信息技术的飞速发展&#xff0c;智能手机和移动应用已成为现代生活不可或缺的一部分。Android作为全球最大的移动操作系统&#xff0c;其开发人才需求量巨大。高职院校作为培养高素质技能人才的重要基地&#xff0c;如何在Android程序设计课程中有效提升学生的实践能力…

7、安装依赖、连接数据库

安装依赖、连接数据库 打开datagrip软件 连接本地数据库,第一次连接会提示安装驱动,保持网络畅通跟着点击即可 创建一个sql控制台: 创建一个数据库(数据库名称可以自取) create database fullStackBlog;右击数据库新建控制台,用于创建数据表 创建一个blog的表 …

IP协议报文格式

IP协议报文格式 一: 报头格式1.1 : 4位版本1.2 : 4位首部长度1.3 : 8位服务类型 :1.4 : 16位总长度(字节数)1.5 : 8位生存时间(TTL)1.6 : 8 位协议1.7 : 32 位源IP / 32 位目的IP 一: 报头格式 1.1 : 4位版本 现在使用的也就只有IPv4,IPv6 1.2 : 4位首部长度 以 4字节为单位…

目前比较好用的LabVIEW架构及其选择

LabVIEW提供了多种架构供开发者选择&#xff0c;以满足不同类型项目的需求。选择合适的架构不仅可以提高开发效率&#xff0c;还能确保项目的稳定性和可维护性。本文将介绍几种常用的LabVIEW架构&#xff0c;并根据不同项目需求和个人习惯提供选择建议。 常用LabVIEW架构 1. …

开源VisualFbeditor中文版,vb7 IDE,VB6升级64位跨平台开发安卓APP,Linux程序

吴涛老矣&#xff0c;社区苦无64位易语言&#xff0c;用注入DLL增强菜单&#xff0c;做成VS一样的界面 终归是治标不治本&#xff0c;一来会报毒&#xff0c;二来闭源20年没更新了 开源的VB7&#xff0c;欢迎易语言的铁粉进群&#xff1a;1032313876 【Freebasic编程语言】编绎…

服务部署:解决Docker容器与虚拟机主机之间MySql连接访问问题

一、场景&#xff1a; 虚拟机上Ubuntu系统安装了Mysql&#xff0c;现在有一个服务应用需要使用docker来部署&#xff0c;服务应用需要连接mysql做数据库基础使用&#xff0c;配置文件中配置了虚拟主机的IP和端口&#xff0c;但是还是无法连接到Mysql&#xff0c;报错无法连接超…

Characters 2 01(卡通可爱人物动画模型)

● 包裹● - 26名男子; - 29个女孩。 ● 使用地点 ● - 游戏。针对游戏引擎优化的模型; -乘法; 广告和营销; - 虚拟现实/增强现实。 ● 特点 ● - 你可以很容易地改变物体的颜色 - 使用UV贴图; - 对象逻辑位置的枢轴; - 模型具有逻辑名称。 ● 几何学● 62个独特的资产(…