Vuex 状态管理怎么在全屏切换时集中存储窗口布局配置

舞姬之光

舞姬之光

2026-07-29

212人浏览

原创

vuex 用于持久化全屏切换时的窗口布局配置,将面板状态、分栏宽度等存于 store state,通过监听 fullscreenchange 更新,并用 getters 派生样式类,配合 vuex-persistedstate 持久化至 localstorage。

vuex 状态管理怎么在全屏切换时集中存储窗口布局配置

全屏切换时保留窗口布局配置,关键不是“存下来”,而是让布局状态本身不随视图销毁而丢失——Vuex 正是为此类跨生命周期、跨组件共享状态设计的。

把布局配置定义为 Vuex 的 state

布局信息(如面板是否展开、分栏宽度、折叠状态、当前激活 tab)属于典型的全局可复用状态,应直接纳入 store 的 state 中,而不是存在组件 data 或 ref 里。

  • 例如在 store/modules/layout.js 中声明:
state: {
  isFullscreen: false,
  sidebarCollapsed: false,
  mainSplitWidth: 240,
  activeTab: 'dashboard',
  gridLayout: { rows: 2, cols: 3 }
}

这样无论组件卸载、路由跳转或全屏切换,只要 store 实例存活,这些值就一直存在。

在全屏事件中同步更新 state

监听浏览器原生的全屏切换事件(fullscreenchange),并在回调中 commit mutation 更新状态。

Vue-router参考手册
Vue-router参考手册

Vue-router参考手册下载

下载
  • 在组件的 mounted 钩子中注册监听:
mounted() {
  document.addEventListener('fullscreenchange', this.handleFullscreenChange)
},
beforeUnmount() {
  document.removeEventListener('fullscreenchange', this.handleFullscreenChange)
},
methods: {
  handleFullscreenChange() {
    const isFs = !!document.fullscreenElement
    this.$store.commit('layout/setFullscreen', isFs)
  }
}

注意:Vue 3 + Composition API 可改用 onMounted/onBeforeUnmount + useStore

用 getters 派生响应式布局逻辑

避免在模板中反复判断 isFullscreen && !sidebarCollapsed 这类组合条件。用 getters 封装计算逻辑,自动响应依赖变化。

  • 例如:
getters: {
  layoutClass: (state) => {
    return {
      'full-layout': state.isFullscreen,
      'collapsed-sidebar': state.sidebarCollapsed,
      'compact-mode': state.isFullscreen && state.sidebarCollapsed
    }
  }
}

模板中直接绑定:<div :class="$store.getters['layout/layoutClass']">,全屏一触发,样式立刻更新。 <h3>配合持久化插件保存用户偏好</h3> <p>如果希望用户下次打开页面时仍保持上次的全屏+布局状态,需将关键字段持久化到 <code>localStorage

  • 推荐使用 vuex-persistedstate 插件,只持久化 layout 模块:
import createPersistedState from 'vuex-persistedstate'
export default new Vuex.Store({
  modules: { layout },
  plugins: [
    createPersistedState({
      key: 'app-layout-config',
      paths: ['layout']
    })
  ]
})

这样即使刷新页面或关闭浏览器,布局配置也不会丢失,真正实现“所见即所得”的连续体验。

前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!

相关专题

更多
python是前端还是后端
python是前端还是后端

Python属于前端也属于后端,其灵活性和丰富的生态系统使得开发人员能够在不同的领域中灵活运用。本专题为大家提供python相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.11

1107

5

前端如何实现即时通讯
前端如何实现即时通讯

实现即时通讯的方法有WebSocket、Long Polling、Server-Sent Events、WebRTC等等。详细介绍:1、WebSocket,它可以在客户端和服务器之间建立持久连接,实现实时的双向通信,前端可以使用 WebSocket API来创建WebSocket连接,并通过发送和接收消息来实现即时通讯;2、Long Polling,是一种模拟实时通信的技术等等。

2023.10.09

2238

6

前端和后端的区别
前端和后端的区别

前端关注的是用户界面的设计和交互,而后端则注重数据处理和逻辑控制。想了解更多前端后端的相关内容,可以阅读本专题下面的文章。

2024.03.19

2128

13

php和前端的关联介绍
php和前端的关联介绍

php既可以作为前端语言,也可以作为后端语言。想了解更多php和前端的相关内容,可以阅读本专题下面的文章。

2024.03.22

2299

10

前端外包工作内容有哪些
前端外包工作内容有哪些

前端外包工作内容包括:1. 网站和应用程序开发;2. 用户界面和交互设计;3. 用户体验优化;4. 设计和视觉开发;5. 跨浏览器兼容性;6. 性能优化;7. 维护和更新;8. 项目管理和沟通。想了解更多前端的相关内容,可以阅读本专题下面的文章。

2024.05.22

335

5

vuex是什么
vuex是什么

Vuex是一个用于Vue.js应用程序的状态管理模式,提供了一种结构化的方式来组织和管理应用程序的状态,使得数据的获取和修改更加简单和可靠。本专题为大家提供vuex相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.11

310

5

墨刀AI提示词教学
墨刀AI提示词教学

本合集由PHP中文网精心整理,为您提供全面的墨刀AI提示词教学。内容涵盖高质量原型撰写公式与实操窍门,助您轻松掌握AI设计工具。无论是零基础入门还是进阶技巧,都能让您快速上手,大幅提升产品设计与协作效率。

2026.08.04

8

21

墨刀AI完整入门
墨刀AI完整入门

PHP中文网为您倾力打造墨刀AI保姆级入门指南完整版!本合集从零基础讲起,涵盖AI生成原型、提示词优化、图片转原型及多轮对话等核心功能。无论您是新手还是进阶用户,都能轻松掌握产品设计全流程。快来PHP中文网,一键解锁高效设计技巧,让想法即刻成型!

2026.08.04

5

20

墨刀AI进阶技巧
墨刀AI进阶技巧

本合集由PHP中文网精心整理,为您提供墨刀AI核心进阶策略指南。内容涵盖高效提示词写作、原型智能生成与微调、结构化导图制作及行业分析报告输出等实战技巧。助您轻松掌握AI设计工具,大幅提升产品设计与团队协作效率。

2026.08.04

7

14

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
uni-app电商系统实战精讲课程
uni-app电商系统实战精讲课程

共66课时 | 16.8万人学习

Vuex参考手册
Vuex参考手册

共0课时 | 0.5万人学习

Vue实战—打造属于自己的外卖系统
Vue实战—打造属于自己的外卖系统

共82课时 | 14.2万人学习