首先win+r,cmd,npm create
ABC创建一个项目,在components中创建两个vue文件,一个用来写普通的vue求和案例,另一个用vuex来写

vue求和

App.vue
<template> <div> <vueCount></vueCount> <hr /> <Student></Student> </div>
</template> <script> import vueCount from './components/vueCount.vue' import
Student from './components/Student.vue' export default { name: 'App',
components: { vueCount, Student } } </script>
vueCount.vue

v-model.number将n以数字形式返回,不加.number则会变成字符串
<template> <div> <h1>当前求和为:{{sum}}</h1> <select v-model.number="n"> <option
value="1">1</option> <option value="2">2</option> <option value="3">3</option>
</select> <button @click="increment">+</button> <button
@click="decrement">-</button> <button @click="odd">当前为奇数则++</button> <button
@click="waitting">等500毫秒再加</button> </div> </template> <script> export default
{ name:'vueCount', data(){ return{ // 当前数的总和 sum:0, // 用户选择的数字 n:1 } },
methods:{ increment(){ this.sum += this.n }, decrement(){ this.sum -= this.n },
odd(){ if(this.sum%2){ this.sum += this.n } }, waitting(){ setTimeout(()=>{
this.sum += this.n },500) } } } </script> <style type="text/css"> button{
margin-left: 10px; } </style>
以上就是vue版本的求和案例

vuex求和:

首先先安装vuex插件,npm i vuex安装,然后在src中创建一个文件夹store,在store里在创建一个index.js文件

在index.js中创建store实例,并写好配置项

index.js
// 改文件用于创建vuex最核心的store import Vue from 'vue' // 引入vuex插件 import Vuex from
'vuex' // 使用插件 Vue.use(Vuex) // 准备actions --用于响应组件中的动作 const actions = {
add(context,value){ context.commit('ADD',value) }, reduce(context,value){
context.commit('REDUCE',value) }, odd(context,value){ if(context.state.sum %
2){ context.commit('ADD',value) } }, waitting(context,value){ setTimeout(() =>
{ context.commit('ADD',value) }, 500) } } // 准备mutations --用于操作数据(state) const
mutations = { ADD(state,value){ state.sum += value }, REDUCE(state,value){
state.sum -= value } } // 准备state --用于存储数据 const state = { sum:0,
school:'怪物学院', subject:'属性魔法' } // 准备getters --用于对state里的数据加工 const getters = {
bigSum(state){ return state.sum*10 } } // 创建store const store = new
Vuex.Store({ actions, mutations, state, getters }) // 导出store export default
store
Student.vue

在script标签下使用import导入vuex里的特殊方法
<template> <div> <h1>当前求和为:{{sum}}</h1> <h1>当前求和放大十倍为:{{bigSum}}</h1> <h2>我在{
{school}},学习{{subject}}</h2> <select v-model.number="n"> <option
value="1">1</option> <option value="2">2</option> <option value="3">3</option>
</select> <button @click="increment(n)">+</button> <button
@click="decrement(n)">-</button> <button @click="odd(n)">当前为奇数则++</button>
<button @click="waitting(n)">等500毫秒再加</button> </div> </template> <script>
import { mapState, mapGetters, mapMutations, mapActions } from 'vuex' export
default { name: 'Student', data() { return { // 用户选择的数字 n: 1 } }, computed: {
// ...解构展开,借助mapState生成计算属性,从state中读取数据(对象写法) //
...mapState({sum:'sum',school:'school',subject:'subject'}), //
...解构展开,借助mapState生成计算属性,从state中读取数据(数组写法) ...mapState(['sum', 'school',
'subject']), ...mapGetters(['bigSum']) }, methods: { //
借助mapMutations生成对应的方法,方法中会调用commit去联系mutations
...mapMutations({increment:'ADD',decrement:'REDUCE'}), //
借助mapActions生成对应的方法,方法中会调用dispatch去联系actions //
...mapActions({odd:'odd',waitting:'waitting'})
...mapActions(['odd','waitting']) } } </script> <style type="text/css"> button
{ margin-left: 10px; } </style>
使用...mapxxx解构,使其能正常出现在页面上

完成后输入npm run serve 跑起来项目,效果图如下:

 具体效果上手尝试便知 

技术
下载桌面版
GitHub
百度网盘(提取码:draw)
Gitee
云服务器优惠
阿里云优惠券
腾讯云优惠券
华为云优惠券
站点信息
问题反馈
邮箱:ixiaoyang8@qq.com
QQ群:766591547
关注微信