vuex实现加减乘除实例

效果图

vuex实例效果图.png

vuex是专门为vue.js应用开发的状态管理模式。详细学习可查看 vuex官网,安装vuex命令:npm install vuex --save
在此是运用vue+vuex+vue-router写了一个简单的加减乘除实例。具体详解如下:

1:编写app.vue,添加导航:

        ```
                <li><router-link to="/vuexstore/comp1">Vuex示例</router-link></li>
      ```

2:编写vuexstroe.vue

                <template>
                     <div class="row">
                       <div class="col-md-2 col-sm-3 col-xs-4">
                          <ul class="nav nav-sidebar navbar-static-top navbar-fixed-top" style="width:200px;margin-top:50px;">
                               <li><router-link to="/vuexstore/comp1">组件1</router-link></li>
                               <li><router-link to="/vuexstore/comp2">组件2</router-link></li>
                           </ul>              
                       </div>
                       <div class="col-md-10 col-sm-9 col-xs-8">
                           <div class="panel panel-success">
                               <div class="panel-body bg-success">
                                   <h3>{ {$store.state.title} }</h3>   //编写是请将大括号中间的空格去除,以下出现相同情况,处理方式一样,不在一一提醒
                                       count is { {count} }
                                   <router-view/>
                                   <p style="color: red;padding-top:15px;">*运行后请选择侧面导航组件1、组件2查看变化</p>
                               </div>
                           </div>
                       </div>
                     </div>
                  </template>
                   <script>
                       import {mapGetters, mapActions} from 'vuex'
                       export default {
                           computed: mapGetters([
                               'count'
                           ])
                       }
                       </script>

3.在component文件夹下,新建文件夹vuexstore。

                在文件夹vuexstore下新建并编写comp1.vue和comp2.vue,这两个组件内容一样,(组件2中,请改为组件人count is,便于区分)
                     <template>
                           <div>
                                组件1 count is { {count} }
                                <br>
                                <button class="btn btn-warning" @click="increment">+5</button>
                                <button class="btn btn-success" @click="decrement">-3</button>
                                <button class="btn btn-danger" @click="multiply">x2</button>
                                <button class="btn btn-primary" @click="division">÷3</button>
                            </div> 
                        </template>
                        <script>
                            import {mapGetters,mapActions} from 'vuex'
                            export default{
                                computed:mapGetters([
                                    'count'
                                ]),
                                methods:mapActions([
                                    'increment',
                                    'decrement',
                                    'multiply',
                                    'division'
                                ])
                            }
                        </script>

4:router/index.js路由文件

                           import Vue from 'vue'
                           import Router from 'vue-router'
                           import Vuexstore from '@/components/vuexstore'
                           import Comp1 from '@/components/vuexstore/comp1'
                           import Comp2 from '@/components/vuexstore/comp2'
                           Vue.use(Router)
                           export default new Router({
                           routes: [
                               {
                               path: '/vuexstore',
                               name: 'Vuexstore',
                               component: Vuexstore,
                               children:[                 //添加子路由
                                   {
                                   path: '/vuexstore/comp1',
                                   name: 'Comp1',
                                   component: Comp1,
                                   },
                                   {
                                   path: '/vuexstore/comp2',
                                   name: 'Comp2',
                                   component: Comp2,
                                   }
                                   ]
                                   }
                               ]
                           })

5.编写vuex/index.js

                           import Vue from 'vue'
                           import Vuex from 'vuex'
                           import getters from './getters'
                           import actions from './actions'
                           import mutations from './mutations'
                           Vue.use(Vuex)
                           const state = {
                               count:0,
                               title:'Vuex简单加减乘除运算实例'
                           }
                           const store = new Vuex.Store({
                               state,
                               getters,
                               actions,
                               mutations
                           })
                           export default store

6.编写vuex/actions.js

                           const actions = {
                               increment : ({commit})=>commit('increment'),
                               decrement : ({commit})=>commit('decrement'),
                               multiply : ({commit})=>commit('multiply') ,
                               division : ({commit})=>commit('division')
                           }
                           export default actions

7.编写vuex/mutaions.js

                           const mutations={
                               increment : state =>{
                                   state.count=state.count+5,
                                   state.title='进行了加法运算'
                               },
                               decrement : state =>{
                                   state.count=state.count-3,
                                   state.title='进行了减法运算'
                               },
                               multiply : state => {
                                   state.count=state.count*2,
                                   state.title='进行了乘法运算'
                               },
                               division : state => {
                                   state.count=state.count/3,
                                   state.title='进行了除法运算'
                               }
                           }
                           export default mutations

8.编写vuex/getters.js

                           const getters = {
                               count : state => state.count,
                               title : state => state.title
                           }
                           export default getters

9.编写main.js

                           import Vue from 'vue'
                           import App from './App'
                           import router from './router'
                           //引入jquery
                           import $ from 'jquery'
                           //引入bootstrap
                           import 'bootstrap/dist/css/bootstrap.min.css'
                           import 'bootstrap/dist/js/bootstrap.min.js'
                           //引入vuex状态管理模式
                           import store from './vuex/index'
                           Vue.config.productionTip = false
                           /* eslint-disable no-new */
                           new Vue({
                           el: '#app',
                           router,
                           store,
                           template: '<App/>',
                           components: { App }
                           })     
                    npm run dev后,启动项目。查看vuex示例</pre>
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 202,980评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,178评论 2 380
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,868评论 0 336
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,498评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,492评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,521评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,910评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,569评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,793评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,559评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,639评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,342评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,931评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,904评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,144评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,833评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,350评论 2 342

推荐阅读更多精彩内容

  • 在使用思维导图总结Vue.js官方文档(例子优化、难点及易错点注释)【下】 中我们使用 vue-router及vu...
    该帐号已被查封_才怪阅读 18,326评论 3 17
  • #藏春雅集#晚上山堂的藏春雅集,听听琴,会会老朋友,真是件美事。听了很多师姐的对琴的感悟,于是想起了自己与山堂的渊...
    欧啦啦滴四眼妹阅读 260评论 0 0
  • 文/麦子HC 那轮爱到天涯的明月,总带伤心的魑魍,不停哀啸、狂笑,为大海编篡蓝寂忧墨,歌咏千年不变的史诗;竖下一界...
    六小麦子阅读 227评论 0 6
  • 这是今晚看的电影,也是一部小说的名字。很矛盾却很抓住人心的题目,看完后更觉得题目的意味深长。 电影讲述了三对半情侣...
    昨夜风铃阅读 295评论 0 0
  • 自以为是的人,我祝福你,祝你早日登上巅峰,然后去享受那美好的生活。 在别人奔溃的日子里,使劲踩。在别人心平气和的日...
    我心如雪1111阅读 240评论 0 0