vuex应用实例-this.$store.commit()触发

新建文件夹store,store下:

action.js

const actions = {}
export default actions;

getter.js

const getters = {}
export default getters;

mutation-types.js

export const publicSetEvent = ‘publicSetEvent‘;

mutations.js

import {publicSetEvent} from ‘./mutation-types‘;

const mutations = {
    [publicSetEvent]: (state, json) => {
        // 是否显示头部title
        state.publicSet.headTitle = json.headTitle || state.publicSet.headTitle;
        // 是否显示头部tabbar切换
        state.publicSet.headNav = json.headNav || state.publicSet.headNav;
        // 头部显示的标题文字
        state.publicSet.sTitle = json.sTitle || state.publicSet.sTitle;
        // tabbar的标题文字及待办badge数字
        state.publicSet.navList = json.navList || state.publicSet.navList;
    }
}

export default mutations;

index.js

import Vue from ‘vue‘
import Vuex from ‘vuex‘
import mutations from ‘./mutations‘;
import getters from ‘./getters‘;
import actions from ‘./actions‘;

Vue.use(Vuex);

const state = {
    publicSet: {//设置公共头
        headTitle: true,
        headNav: false,
        sTitle: ‘头部标题‘
    }
}

const store = new Vuex.Store({
    state,
    getters,
    mutations,
    actions
});

export default store;

头部公共组件components文件夹下

v-header.vue

<template>
  <div class="v-header">
    <vTitle v-if="publicSet.headTitle" :stitle="publicSet.sTitle"></vTitle>
  </div>
</template>

<script>
import vTitle from ‘./v-title‘;
import {mapState} from ‘vuex‘;
export default{
   name:‘v-header‘,
   components:{vTitle},
   data(){
    return{

    }
   },
   computed: {
       ...mapState([‘publicSet‘])
   }
}
</script>

v-title.vue

<template>
  <div class="v-title">
      <XHeader :left-options="{backText:‘‘}" :title="stitle"></XHeader>
  </div>
</template>

<script>
import { XHeader } from ‘vux‘
export default{
  name:‘v-title‘,
  props:[‘stitle‘],
  components:{XHeader},
  data (){
      return {
      }
  },
  methods: {
  }
}

</script>

<style lang="less">
</style>

App.vue

<template>
  <div id="app">
    <vHeader></vHeader>
    <router-view/>
  </div>
</template>

<script>
import vHeader from ‘@/components/header/v-header‘
export default {
  name: ‘app‘,
  components:{vHeader}
}
</script>

main.js

import Vue from ‘vue‘
import App from ‘./App‘
import router from ‘./router‘
import Vuex from ‘vuex‘
import store from ‘./store‘
Vue.use(Vuex)

Vue.config.productionTip = false

new Vue({
  el: ‘#app‘,
  router,
  store,
  components: { App },
  template: ‘<App/>‘
})

页面调用index.vue

<template>
    <div class="index">
    </div>
</template>

<script>
export default{
    name:‘index‘,
    data(){
        return{

        }
    },
    created(){
    },
    beforeRouteEnter(to,from,next){
        let option={
          headTitle:true,      sTitle:‘我是新标题‘
        }
        console.log(option);
        next(vm=>{
          vm.$store.commit(‘publicSetEvent‘,option);
        })
    },
    methods:{

    }

}
</script>

<style lang="less">
</style>

运行进去index页面就可以看到公共头了

原文地址:https://www.cnblogs.com/leiting/p/9753838.html

时间: 2024-10-19 22:31:02

vuex应用实例-this.$store.commit()触发的相关文章

Vuex的this.$store.commit和在Vue项目中引用公共方法

2018年11月22日 20:50:29 Funfction_Zero 阅读数 3230 1.在Vue项目中引用公共方法 作为一个新人小白,在使用vue的过程中,难免会遇到很多的问题,比如某个方法在很多组件中都能用的上,如果在每个组件上都去引用一次的话,会比较麻烦,增加代码量.怎么做比较好呢,话不多说直接看代码把 首先 要在main.js中引入公共js.然后,将方法赋在Vue的原型链上.像图中这样. 然后在需要的组件上去引入这个方法 mouted (){ //调用方法 this.common.l

Vue--vuex状态管理-多界面状态管理$store.state.变量名称 ---数据通触发事件改变this.$store.commit

1.作用需求:多个状态,在多个界面的共享问题 比如:用户的登录状态,用户名称,头像,地理位置信息等等 比如:商品的收藏, 这些状态信息,我们都可以放在同一的地方,对他进行保存和管理,而且他们还是响应式的. 2.不同于父子组件之间的传递,应用于没有直接的关系. 使用步骤: 一,Vuex是一个插件  下载: npm install vuex --save 二,创建一个文件夹store,仓库的意思,或者叫vuex,不建议直接在main.js文件中引入.就像router路由一样,这样会使main文件越来

VUEX中的dispatch()和commit()

commit: 同步操作存储 this.$store.commit('changeValue',name) 取值 this.$store.state.changeValue dispatch: 异步操作存储 this.$store.dispatch('getlists',name) 取值 this.$store.getters.getlists 原文地址:https://www.cnblogs.com/donglt-5211/p/12661763.html

Vuex核心知识(转)

转:http://www.cnblogs.com/ghost-xyx/p/6380689.html Vuex 是一个专门为 Vue.js 应该程序开发的状态管理模式,它类似于 Redux 应用于 React 项目中,他们都是一种 Flux 架构.相比 Redux,Vuex 更简洁,学习成本更低.希望通过本文帮助还没使用 Vuex 的同学快速上手. 注:本文针对 Vuex 2.0 的语法,目前通过 npm 默认下载的版本为 1.0+ ,想引入 2.0 版本可以通过 script 标签引入. <sc

使用Vuex心得

之前一直都是看别人写的vuex感觉还挺好理解的,今天自己根据需求写了下vuex,一下子不知道怎么写了, 想要用好vuex还是先要知道原理: 参考好博客写的非常到位:https://www.cnblogs.com/DM428/p/7293867.html 基本组成:     注意到这个store对象包含三个子对象: state.mutations.actions    其中state用于存储数据,类似vue实例的data属性.     mutations用于递交更改,对state对象中的属性数据进

vuex及其五大核心功能运用解析

什么是vuex? Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式.它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化. 什么情况下使用vuex? 如果您不打算开发大型单页应用,使用 Vuex 可能是繁琐冗余的.确实是如此——如果您的应用够简单,您最好不要使用 Vuex.一个简单的 store 模式就足够您所需了.但是,如果您需要构建一个中大型单页应用,您很可能会考虑如何更好地在组件外部管理状态,Vuex 将会成为自然而然的选择. vuex流

来实现一个缩水版Vuex

对 Vuex 源码进行浓缩,DIY 一个小型 Vuex 功能如下 通过 $store.commit 改变 $store.state 实现 strict model 源码约70行左右比较好理解,下面讲解一下两个比较重要的点. install Vue.use(Vuex)实际上调用的是 Vuex 的 install 方法,该方法在每个组件的 beforeCreate 钩子中为当前组件注入 $store,使所有组件的 $store 属性都指向同一个对象,也就是创建 Vue 实例时传入的 store 对象

vuex简单使用。

项目结构: 1:首先在项目中新建store.js文件,.js文件内容如下: import Vue from 'vue' import Vuex from 'vuex' Vue.use(Vuex) export default new Vuex.Store({ state:{ count:0 }, getters:{ addcountgetters(state){ return state.count + 4; } }, mutations:{//相当于methods,定义一些方法(同步).方法里

Vuex教程

什么是Vuex? vuex是一个专门为vue.js设计的集中式状态管理架构.状态?我把它理解为在data中的属性需要共享给其他vue组件使用的部分,就叫做状态.简单的说就是data中需要共用的属性. 引入Vuex(前提是已经用Vue脚手架工具构建好项目) 1.利用npm包管理工具,进行安装 vuex.在控制命令行中输入下边的命令就可以了. npm install vuex --save 2.新建一个store文件夹(这个不是必须的),并在文件夹下新建store.js文件,文件中引入我们的vue和