vue中使用vuex

 const store = new Vuex.Store({
      state: {
         obj:{}
      },
      getters: {
         nameInfo(state,getter){
        	return "姓名:" + state.obj.name
      	 },
      	  //第二个参数getters用于将getters下的其他对象拿来用
      	 fullInfo(state,getters){
        	return getters.nameInfo + '年龄:' + state.obj.age
    	 } 
      },
      mutations: {
         saveInfo(state,value){
            //state里为初始值,value为你要存的值
            state.obj= value
         },
      },
      actions: {
		//context(上下文):commit,dispatch,state,rootState,getters,rootGetters
      	 async viewInfo(context, id){
            const { data } = await axios.get(`/api/residueDegree?id=${id}`)
      		if (data.code === "0000") {
        	   context.commit("saveInfo", data.data)
      		}
      		return data
         }
	  }
  })

//获取值
this.$store.state.obj
this.$store.getters.fullInfo

state 存放状态
getters 对state中的成员加工后传递给外界
mutations 对state成员操作(对数据的增加、删除、修改等等)
actions 对异步进行操作
modules 模块化状态管理

actions 与mutations区别

actions 提交的是 mutations,而不是直接变更状态。
actions 可以包含任意异步操作,使用dispatch方法,
mutation只能是同步操作,使用commit直接修改state里的值

let value ={ name:'nick',age:18 }
this.$store.commit("saveInfo",value)
this.$store.dispatch('viewInfo',123).then(()=>{})

vuex中刷新页面数据会消失问题

const store = new Vuex.Store({
    state:sessionStorage.getItem('state') ? JSON.parse(sessionStorage.getItem('state')): {
       name:""
       age:''
    }
})
mounted() {
    window.addEventListener('beforeunload', this.saveState)
},
methods: {
    saveState() {
        sessionStorage.setItem('state', JSON.stringify(this.$store.state))
    }
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值