当前位置: 代码网 > it编程>前端脚本>Vue.js > 如何在Vue项目中使用vuex

如何在Vue项目中使用vuex

2024年05月18日 Vue.js 我要评论
在vue项目中使用vuex在一个vue项目中使用vuex,需要根据项目来源分两种情况 :第一种情况:在老项目中使用。 先额外安装vuex包,然后在配置。第二种情况:在新项目中使用。 在配置vue-cl

在vue项目中使用vuex

在一个vue项目中使用vuex,需要根据项目来源分两种情况 :

  • 第一种情况:在老项目中使用。 先额外安装vuex包,然后在配置。
  • 第二种情况:在新项目中使用。 在配置vue-cli中创建项目时,就可以直接选中vuex项,这样就不用做任何配置了(脚手架会自动帮我们完成的)。

具体如下图示:

这里我们主要说明第一种情况,在一个老项目中如何使用vuex,步骤如下:

1.首先安装vuex包,安装完之后开始配置

2.在src目录下创建一个文件夹store,在store文件夹中新建一个index.js文件

3.创建vuex.store实例 :index.js中进行如下配置:

4.向vue实例注入store:main.js中进行如下配置: 

5.配置完后就可以在任意组件中使用了 

在任意组件中,通过this.$store.state 来获取公共数据,在模板中,则可以省略this而直接写成: {{$store.state.属性名}}

一、安装vuex

npm install vuex --save

二、创建store

在项目src目录下创建store目录,在store目录中创建index.js文件。

写入一下内容:

import vue from 'vue'
import vuex from 'vuex'
 
// 挂在vuex
vue.use(vuex)
 
// 创建vuex对象
const store = new vuex.store({
    state:{
        // 存放的键值对就是所要管理的状态
        // 以key:value为例
        key : value,
    },
    mutations:{
        setkey(state, payload) {
            state.key = payload;
        }
    }
})
 
export default store

三、挂载store

在main.js中,添加代码:

import store from './store'
 
new vue({
  el: '#app',
  router,
  store: store, //store:store 和 router一样,将我们创建的vuex实例挂载到这个vue实例中
  components: { app },
  template: '<app/>'
})

四、在组件中使用

将需要使用的值写在computed中:

computed:{
    key() {
        return this.$store.state.key;
    }
}

如果在组件中使用v-model绑定computed中的值,需要在computed中定义set方法,如下:

computed:{
    key:{
        get(){
            return this.$store.state.key;
        },
        set(val){
            this.$store.commit('setkey', val);
        }
    }
}

五、在vue组件中监听vuex

在vue组件中监听vuex:

  • 通过computed获取vuex中的状态值。
  • 通过watch监听值的改变。
computed:{
    key(){
        return this.$store.state.key;
    }
},
watch:{
    key(val) {
        // 要做的操作
    }
}

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com