当数据变化时(添加,修改,删除),使用vuex实现页面刷新

项目情景如图: 

1.这是一个普通的查询页面,数据显示在表格中,点击查询,根据选项进行匹配查询。

2.点击添加、修改、删除操作,成功后会返回查询页面,并刷新查询结果。

使用vuex进行刷新操作:

1.新建vuex文件,   vuex.js

const busness = {
    state: {
        updateTableList: false
    },
    mutations: {
        UPLOAD_TABLE_LIST: (state,update) => {
            state.updateTableList = update
        }
    }
}
export default busness

 2.新建getter.js文件

const getter = {
    updateTableList: state =>state.updateTableList
}
export default getters

3.查询页面table,添加数据后执行刷新

<template>
    <div>
        <!-- 省略  -->
        <el-button @click="loadData">查询</el-button>
        <el-button  @click="addData">添加</el-button>
    </div>
</template>

<script>
import{ mapGetters } from 'vuex'
export default {
    data() {
      return{
            // ....
        }
    },
    computed: {
        ...mapGetters([
            'updateTableList'
        ]),
        watch: {
            // 监听updateTableList,如果updateTableList值有变化,则执行刷新功能
            updateTableList: function (newValue) {
                if(newValue) {
                    this.loadData()
                    this.$store.commit('UPLOAD_TABLE_LIST',false)
                }
            }
        },
        methods: {
            // 查询表格数据的方法,刷新方法
            loadData() {
                // ....
            },
            // 添加数据的方法
            addData(){
                // ....
                // 添加成功后刷新页面
                this.$store.commit('UPLOAD_TABLE_LIST',true)
            }
        }
    }
}
</script>

<style>

</style>

 

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: 在 Vuex 中,您可以使用本地存储(例如 localStorage)来缓存状态数据,并在页面刷新将其加载回状态中。 首先,您需要在 Vuexstore 实例中定义一个方法,用于在页面刷新从本地存储中加载数据: ``` 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数据缓存主要可以通过以下几个步骤实现。 首先,我们可以在Vuexstore使用`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值存储起来,以便下次使用。 最后,我们还可以在Vuexstore中定义一个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. 在Vuexstore中,监听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数据缓存。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值