UniApp 的页面缓存机制主要通过 Vuex 状态管理和 本地存储 实现,适用于不同场景下的数据持久化需求。以下是具体实现方法:
1. Vuex 状态管理(内存级缓存)
- 适用场景:页面间共享数据,但刷新后数据丢失。
- 实现步骤:
- 在
store/index.js 中定义状态:export default new Vuex.Store({
state: {
cachedData: null // 缓存数据
},
mutations: {
setCachedData(state, payload) {
state.cachedData = payload;
}
}
});
- 在页面中存储和读取数据:
// 存储数据
this.$store.commit('setCachedData', { key: 'value' });
// 读取数据
const data = this.$store.state.cachedData;
2. 本地存储(持久化缓存)
3. 页面栈缓存(导航缓存)
- 适用场景:通过
uni.navigateTo 跳转时,原页面保留在栈中,返回时状态自动恢复。
- 注意:仅适用于非销毁性跳转,页面需未调用
onUnload。
4. 全局变量缓存
使用建议
- 短期共享数据:使用 Vuex。
- 长期持久化:结合本地存储与 Vuex,在 App 启动时读取存储数据到 Vuex。
- 页面状态恢复:合理利用页面栈机制,避免重复数据请求。
通过以上方法,可灵活实现 UniApp 的页面缓存需求。