VueX的存储与使用缓存页面查询条件

当我们在页面查询数据后,跳转到另一个页面,返回时查询条件还在怎么?

第一步:在vuex里新建一个对象用来保存查询条件。

在state:{}这个对象里增加一个变量 例如:

  state: {
    rateSettingQuery: {   // 需要缓存的查询条件
      name: "",
      startTime: "",
      endTime: "",
      type: "",
      page:"",
    },
  }

第二部:在mutations:{}里面新加一个函数用来修改state里面的值,因为vuex里是不能直接修改的。

  mutations: {
    save_StorageQueryCriteria(state, value) {       // 页面在跳转时会把条件传过来
      state.rateSettingQuery.name = value.name
      state.rateSettingQuery.startTime = value.startTime
      state.rateSettingQuery.endTime = value.endTime
      state.rateSettingQuery.type = value.type
      state.rateSettingQuery.page = value.page
    },
  }

这样我们再vuex的准备工作就弄好了。

我们在页面跳转时只需把参数传过来就好了。

页面路由跳转示例:

   particulars(obj){
      let newObj = {     // 需要缓存的参数用一个对象包起来
       name:this.insuranceCompanyName,startTime:this.startTime,
       endTime:this.startEndTime,type:this.rateType,page:this.page1
      }
      // save_StorageQueryCriteria 这个方法就是mutations里的函数
      this.$store.commit("save_StorageQueryCriteria",newObj) 
      this.$router.push({
        name:"newRateSetting",
        query:{
          status:"1", // 详情
          id:obj.id,
        }
      })
    }

最后在新建一个函数用来回显数据

   // 回显查询条件
    queryConditionsDisplayed(){
      let obj = this.$store.state.user.rateSettingQuery  // 把vueX里的数据取出来
      this.insuranceCompanyName = obj.name
      this.startTime = obj.startTime
      this.startEndTime = obj.endTime
      this.rateType = obj.type
      this.page1 = obj.page
      this.getListData()  // 这个是获取页面list的方法,查询条件有了之后在获取一下数据
    },

最后页面就能看到回显的数据了。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 在 Vuex 中,您可以使用本地存储(例如 localStorage)来缓存状态数据,并在页面刷新时将其加载回状态中。 首先,您需要在 Vuex 的 store 实例中定义一个方法,用于在页面刷新时从本地存储中加载数据: ``` const store = new Vuex.Store({ state: { count: 0 }, mutations: { increment (state) { state.count++ } }, actions: { loadData ({ commit }) { const data = window.localStorage.getItem('vuex-data') if (data) { commit('increment', JSON.parse(data).count) } } } }) ``` 然后,您可以在 Vue 应用的 created 钩子函数中调用这个方法: ``` new Vue({ el: '#app', store, created () { this.$store.dispatch('loadData') }, ... }) ``` 最后,在 Vuex 状态变更时,您需要将数据保存到本地存储中: ``` store.subscribe((mutation, state) => { window.localStorage.setItem('vuex-data', JSON.stringify(state)) }) ``` 这样,在页面刷新时,您的 Vuex 状态将被缓存,并在页面重新加载后恢复。 ### 回答2: 页面刷新时如何实现Vuex数据缓存主要可以通过以下几个步骤实现。 首先,我们可以在Vuex的store中使用`localStorage`或者`sessionStorage`来存储数据,这样在页面刷新后可以从中读取之前存储的数据,并将其赋值给Vuex的state。比如在每次mutation改变state时,可以在mutation函数内部使用localStorage或sessionStorage的setItem方法将state的值存储起来。 其次,我们可以在Vue组件的created钩子函数中,从localStorage或sessionStorage中读取之前存储的状态,并通过commit方法将其提交到Vuex的state中。这样可以保证在页面刷新后,重新创建Vue组件时,能够读取到之前存储的状态。 另外,在Vue组件的beforeUnload钩子函数中,可以使用localStorage或sessionStorage的setItem方法将Vuex的state值存储起来。这样可以保证在页面刷新或离开页面时,将最新的state值存储起来,以便下次使用。 最后,我们还可以在Vuex的store中定义一个action方法,在该方法中使用localStorage或sessionStorage的getItem方法读取之前存储的状态,并通过commit方法将其提交到Vuex的state中。然后在Vue组件的created钩子函数中,使用dispatch方法来调用该action方法,从而在页面刷新后能够读取到之前存储的状态。 综上所述,可以通过使用localStorage或sessionStorage和相应的钩子函数来实现Vuex数据的缓存,以保证在页面刷新时能够继续使用之前的数据。 ### 回答3: 页面刷新时如何实现Vuex数据缓存是一个常见的问题。Vuex 是一个用于 Vue.js 应用程序的状态管理模式,可以集中存储应用程序的所有组件之间共享的状态数据。在页面刷新时,由于浏览器刷新导致应用程序重启,Vuex 中的数据也会被重置,因此需要一种方式来实现数据的持久化缓存。 一种实现Vuex数据缓存的方式是使用本地存储(local storage)来保存和恢复数据。当页面要被刷新时,可以先将Vuex的数据通过localStorage.setItem()方法保存到本地存储中。具体步骤如下: 1. 在Vuex的store中,监听window对象的beforeunload事件,即页面即将被卸载前触发的事件。 ```javascript mutations: { saveData(state) { window.addEventListener('beforeunload', () => { localStorage.setItem('vuexData', JSON.stringify(state.data)) }) } } ``` 2. 添加初始化订阅,用于在页面加载时从本地存储中获取之前保存的数据并更新Vuex的状态。 ```javascript actions: { initDataFromLocalStorage({ commit }) { const data = localStorage.getItem('vuexData') if (data) { commit('updateData', JSON.parse(data)) } } } ``` 3. 在应用程序的入口文件main.js中,通过调用actions的initDataFromLocalStorage方法来初始化Vuex的数据。 ```javascript import Vue from 'vue' import store from './store' store.dispatch('initDataFromLocalStorage') new Vue({ store, render: h => h(App) }).$mount('#app') ``` 这样,在页面刷新时,Vuex存储的数据就会被保存到本地存储中,然后在页面重新加载后会初始化Vuex的数据,并恢复之前保存的状态。 需要注意的是,使用本地存储保存Vuex数据会增加额外的存储开销,并且当数据量较大时,可能会影响页面的性能。因此,需要根据实际情况来决定是否使用本地存储来实现Vuex数据缓存

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值