美文网首页
vuex实现加减乘除实例

vuex实现加减乘除实例

作者: 小冕 | 来源:发表于2017-12-01 11:05 被阅读0次

效果图

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>

相关文章

网友评论

      本文标题:vuex实现加减乘除实例

      本文链接:https://www.haomeiwen.com/subject/lfbibxtx.html