【发布时间】:2021-04-25 18:38:01
【问题描述】:
我正在 Vue3 中构建一个类似于Scratch 的网络应用程序,其中我有一个专门用于创建游戏的页面。在此页面上,我需要在商店中跟踪有关游戏的一些数据,以便所有组件都可以访问它。例如,我需要跟踪游戏中的 Sprite 列表以及游戏中当前选择的 Sprite。这些对象在多个组件的整个视图中被引用。目前,我将其全部存储到 Vuex 中。
但是,如果用户返回主页(或论坛页面等),存储在 Vuex 中的数据就没有任何意义了!当没有创建游戏时,无需跟踪“Sprite 列表”!
- Editor 组件必须显示所选 Sprite 的代码。
- Stage 必须呈现所有 Sprite 的响应式列表。
- Sprite Selector 必须呈现(和修改)所有 Sprite 的列表。
所以这些 Sprite 对象必须以某种状态存储。
我的问题是:当用户切换页面并且不再创建游戏时,用什么 Vue3 方法来处理这种状态?我应该按照here 的描述为这个视图实现一个简单的存储吗? Vuex 仅适用于单页应用程序还是可以在这种情况下使用?
我也有使用单独的 Vue 应用程序来保存创建页面的想法。例如:
const createGameApp = createApp({
// this is used only for the Create page. It could have its own Vuex!
}).mount('#app-a')
const restOfTheWebsite = createApp({
// this will be used for everything else
}).mount('#app-b')
【问题讨论】: