Vuex 全局共享数据

 1、state 翻译为状态:vuex 的单一状态树,用于存储全局共享的数据信息

// 状态: vuex的单一状态树,用于存储全局共享的数据信息。
  state: {
    // 该user对象就是存储在vuex中的可以供组件直接访问的全局状态信息
    user: get(KEYS.USER_INFO),
    token: get(KEYS.TOKEN),
  },

 2、mutations 用于修改 state 数据(此处声明一些方法)

  mutations: {
    saveToken(state, token){
      state.token = token
    },
    /** 此处声明方法,该方法将被vuex所管理
     *  方法用于修改state中的用户数据,如果需要修改用户数据。
     *  state:   vuex自动传入的state对象
     *  payload: 用户调用当前方法时传递的自定义参数
     */
    updateUser(state, payload){
      state.user = payload
    },
  }

3、actions 用于定义一些方法 执行异步任务后得到结果 更新state

actions:{

        login (store , user) {

                通过user对象中的账号、密码,发送http请求,执行登录

                ‘登录成功后将会得到用户对象,

                希望将用户对象,存入state (通mutations存入state)

                store.commit (' updateuser ',当前用户对象)

        }

}

actions: {
    /**
     * 执行异步登录业务,登录成功后将用户对象存入state(调用mutations)
     * @param  store   vuex自动传入  Store对象
     * @param  params  用户传递的参数   {username:xx, password:xx}
     */
    login(store, params){
      httpApi.adminApi.login(params).then(res=>{
        if(res.data.code==200){ // 登录成功
          store.commit('updateUser', res.data.data.user)
          store.commit('saveToken', res.data.data.token)

          // 向Storage中存储user对象
          set(KEYS.USER_INFO, res.data.data.user)
          // 向Storage中存储token字符串
          set(KEYS.TOKEN, res.data.data.token)

          Notification.success({
            message: '登录成功'
          })
          router.replace('/home/index')

        }else {  // 登录失败
          Notification.error({ message:res.data.msg })
        }
      })
    }
  }, 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值