vuex导入_Vuex的引入及其仓库store的配置

本文详细介绍了如何在Vue项目中引入并配置Vuex进行全局状态管理和数据共享。首先,通过官方链接了解Vuex的安装方法,然后通过`cnpm install vuex --save`安装。接着在`src/main.js`中导入并使用Vuex,创建`src/store/index.js`配置仓库。在`index.js`中声明状态、定义突变和行动,最后在组件中调用`$store`来获取和修改状态。文章还展示了如何在组件中使用`dispatch`触发`actions`来更新`mutations`,从而改变状态。
摘要由CSDN通过智能技术生成

以下是Vuex全局状态管理,数据共享具体操作:

官网:https://vuex.vuejs.org/zh/installation.html

Vuex全局状态管理,数据共享:

1,可以查看vuex官网:https://vuex.vuejs.org/zh/installation.html

2,引入vuex有两种方式:

a,直接下载保存vuex.js

b,(如果使用cnpm,所以下面也要使用cnpm)在项目名称下一级安装vuex:

安装: cnpm install vuex --save

卸载: cnpm uninstall vuex

3,所有插件的使用都是在src/main.js中进行导入的。包括:插件vue.js,vuex.js,App,router等。

打开src/main.js 导入如: import store from './store',并且需要在main.js中的

new Vue实例中添加:store。如下:

new Vue({

el: '#app',

router,

store,//引用vuex仓库:store

components: { App },

template: ''

})

4,在src目录下创建stroe文件夹,以及在store里面创建index.js文件:

src/store/index.js文件中进行配置,如下:

import Vue from 'vue' //调用 vue 这里可以分号,也可以不添加分号

import Vuex from 'vuex'; //调用 vuex 插件 这里可以分号,也可以不添加分号

Vue.use(Vuex) //全局调用Vuex,这里千万不能添加分号

export default new Vuex.Store({ //实例化vuex仓库

/*store运行机制:

通过actions触发mutations(类似事件),进而修改具体仓库状态state(store.state.count)

Vuex 中的 mutation 非常类似于事件:每个 mutation 都有一个字符串的 事件类型 (type) 和 一个 回调函数 (handler)。*/

state:{//共享数据池,声明公共数据,即状态

count:0,

num:1,

},

mutations:{//用于处理公共数据

increment(state,num){

state.count++;

state.num = num;

}

},

actions:{//把数据处理委托给mutations对象的increment方法

inc({commit},obj){ //唯一方法:使用 store.commit 方法触发状态变更

commit('increment',obj);

}

}

})

5,在需要调用共享数据的页面进行数据调用和修改:

获取共享数据:this.$store.state.count;

修改共享数据:this.$store.dispatch('inc',形参/实参);

/*store运行机制:actions --> mutations --> state 所以在修改共享数据时,

是直接调用actions中的指定函数,所以这里的'inc'函数明一定要存在。*/

{{count}}
=========================================

export default{

data(){

return{

count:0,

love:'I Love You Forever!',

}

},

methods:{

setNum(){

this.$store.dispatch('inc',this.love);//修改共享数据num

//状态修改一定是在mutations中,一定不能在调用的页面之中

// this.$store.state.count++;

},

getNum(){

console.log(this.$store.state.num);

},getCount(){

console.log(this.$store.state.count);

},

setLove(){

this.$store.dispatch('str','I want to fuck you fuck you!');

//状态修改一定是在mutations中,一定不能在调用的页面之中

// this.$store.state.a++;

},

getLove(){

console.log(this.$store.state.love);

},

getA(){

console.log(this.$store.state.a);

}

}

}

// 以下是src/store/index.js页面的配置

import Vue from 'vue' //调用 vue 这里可以分号,也可以不添加分号

import Vuex from 'vuex'; //调用 vuex 插件 这里可以分号,也可以不添加分号

Vue.use(Vuex) //全局调用Vuex,这里千万不能添加分号

export default new Vuex.Store({ //实例化vuex仓库

/*store运行机制:

通过store.commit方法---触发---》store.state状态变更---》

Vuex 中的 mutation 非常类似于事件:每个 mutation 都有一个字符串的 事件类型 (type) 和 一个 回调函数 (handler)。*/

state:{//共享数据池,声明公共数据,即仓库状态

count:0,

num:1,

a:0,

love:'i love you',

},

mutations:{//用于处理公共数据,mutation 英 /mjuːˈteɪʃn/ 突变

increment(state,num){

state.count++;//状态修改一定是在mutations中,一定不能在调用的页面之中

state.num = num;

},

strings(state,str){

this.state.love=str;

this.state.a++;//状态修改一定是在mutations中,一定不能在调用的页面之中

}

},

actions:{//把数据处理委托给mutations对象的increment方法

inc({commit},obj){

commit('increment',obj);

},

str({commit},str){

commit('strings',str)

}

}

})

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vuex中定义vuex_fontsize的步骤如下: 1. 在store.js文件中定义一个常量FONTSIZE,用于存储字体大小的值。 2. 在state中定义一个名为vuex_fontsize的属性,它的值为localStorage.getItem(FONTSIZE)或默认值'14px'。 3. 在mutations中定义一个名为setFontSize的方法,它接受两个参数:state和fontSize。在方法中,将state.vuex_fontsize的值设置为fontSize,并将fontSize存储到localStorage中。 4. 在actions中定义一个名为updateFontSize的方法,它接受一个context对象和一个fontSize参数。在方法中,调用context.commit方法来调用setFontSize方法,并将fontSize作为参数传递给它。 5. 在组件中使用mapState和mapActions来获取和更新vuex_fontsize的值。 代码如下所示: ```javascript // store.js const FONTSIZE = 'FONTSIZE' export default new Vuex.Store({ state: { vuex_fontsize: localStorage.getItem(FONTSIZE) || '14px' }, mutations: { setFontSize(state, fontSize) { state.vuex_fontsize = fontSize localStorage.setItem(FONTSIZE, fontSize) } }, actions: { updateFontSize({ commit }, fontSize) { commit('setFontSize', fontSize) } } }) // 组件中使用 <template> <div> <p :style="{ fontSize: vuex_fontsize }">这是一段文字</p> <button @click="changeFontSize">改变字体大小</button> </div> </template> <script> import { mapState, mapActions } from 'vuex' export default { computed: { ...mapState(['vuex_fontsize']) }, methods: { ...mapActions(['updateFontSize']), changeFontSize() { this.updateFontSize('16px') } } } </script> ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值