vuex状态管理使用记录一

48 篇文章 0 订阅

第一种情况:

        store中的设置为:

主要文件是modules中的文件以及index.js文件。

其中index.js中代码如下:

import Vuex from 'vuex'

import app from './modules/app'
import user from './modules/user'
import permission from './modules/permission'

import getters from './getters'

Vue.use(Vuex)

export default new Vuex.Store({
  modules: {
    app,
    user,
    permission
  },
  state: {

  },
  mutations: {

  },
  actions: {

  },
  getters
})

modules中user.js的代码如下:

import storage from 'store'
import { login} from '@/api/login'
import { ACCESS_TOKEN } from '@/store/mutation-types'

const user = {
  state: {
    token: '',
    name: '',
    ...
  },

  mutations: {
    SET_TOKEN: (state, token) => {
      state.token = token
    },
    ...
  },

  actions: {
    // 登录
    Login ({ commit }, userInfo) {
      return new Promise((resolve, reject) => {
        login(userInfo).then(response => {
          const {code,result,message} = response
          if(code==200){
              storage.set(ACCESS_TOKEN, result, 7 * 24 * 60 * 60 * 1000)
              commit('SET_TOKEN', result)
              resolve(response)
          }
        }).catch(error => {
          reject(error)
        })
      })
    },
...
}
export default user

然后在main.js中引用挂载:

import store from './store/'

new Vue({
  router,
  store,
  ...
  render: h => h(App)
}).$mount('#app')

在页面中使用的时候,可以这样:

import { mapActions } from 'vuex'
import { mapGetters } from 'vuex'

export default {
   ...
   data(){
    return{
     userid:this.$store.state.user.id
    }
   }
   computed: {
    ...mapGetters(['user']),
    
    }
   methods: {
        ...mapActions(['Login']),
        
     toLogin(code) {
      const { Login} = this
      Login(code) // 使用Login方法
        .then((res) => {
          ...
          })
        .catch((err) => { ...})
        .finally(() => {...})

    },
    }
}

获取状态值,可以如上代码:使用mapGetters,然后如果页面中调用则可以直接书写,比如:

<input v-model="user.name"/>

也可以直接使用this.$store.state.user.name。

以上两个方式都可以获取当前的状态。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在项目中使用Vuex有以下几个好处: 1. 集中式状态管理Vuex提供了一个集中式的状态管理方案,将数据存储在一个单一的store中。这使得不同组件之间共享和访问数据变得简单和直观。无论在项目的哪个组件中,都可以轻松地获取和修改共享的状态。 2. 组件间通信:Vuex提供了一种可预测的状态管理机制,可以在不同的组件之间进行通信和共享数据。通过定义和触发mutations来修改状态,各个组件都可以监听状态的变化并作出相应的反应,实现了组件之间的解耦。 3. 状态持久化:Vuex支持对状态进行持久化存储,可以通过插件将状态保存到本地存储或其他持久化方式中。这样,在页面刷新或重新加载后,可以恢复之前的状态,提供更好的用户体验。 4. 易于调试和追踪:Vuex提供了强大的开发者工具支持,可以方便地进行状态的调试、追踪和回溯。开发者可以轻松地查看状态的变化历史、调试mutation的执行过程等,帮助快速定位和解决问题。 5. 插件扩展:Vuex提供了丰富的插件机制,可以通过插件扩展Vuex的功能。开发者可以编写自定义插件来实现特定的需求,例如数据持久化、日志记录、异步操作等。 总的来说,Vuex通过集中式状态管理、组件间通信、状态持久化、调试追踪等特性,使得状态管理变得更加简单和可预测。它为大型项目提供了一种可靠的状态管理解决方案,提高了开发效率和代码的可维护性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值