无厘头 -- 基于vue 公用状态机,已用于放置类篮球卡牌Game

引入 Piniaa

bash 复制代码
npm install pinia
# or yarn add pinia

或者

bash 复制代码
"dependencies": {
    "@ckpack/vue-color": "^1.4.1",
    "@element-plus/icons-vue": "^2.0.10",
    "axios": "^1.3.2",
    "element-plus": "^2.2.29",
    "lodash-es": "^4.17.21",
    "pinia": "^2.0.28",
    "vue": "^3.2.45",
    "vue-hooks-plus": "1.6.0-alpha.2",
    "vue-router": "^4.1.6",
    "vue3-moveable": "^0.18.1"
  },

完整 vue (公用状态) 代码如下:

关键是用了 pinia 这个库,好像专门用于保存状态

javascript 复制代码
import { ref, watchEffect } from 'vue';
import { defineStore } from 'pinia';

export const usePageState = defineStore('pageState', () => {
  const pageTitle = ref('视频编辑(CcClip)');
  // 暗色模式
  const isDark = ref(localStorage.theme !== 'light');
  const isLoading = ref(localStorage.loadingPage === '1');
  const hideSubMenu = ref(localStorage.showSubmenu === '0');
  watchEffect(() => {
    console.log(`switch to ${isDark.value ? 'dark' : 'light'}`);
    localStorage.theme = isDark.value ? 'dark' : 'light';
    localStorage.loadingPage = isLoading.value ? '1' : '0';
    localStorage.hideSubMenu = hideSubMenu.value ? '1' : '0';
    document.documentElement.classList[isDark.value ? 'add' : 'remove']('dark');
  });

  // 属性宽度
  const attrWidth = ref(parseInt(localStorage.attrW || '320'));
  // 轨道高度
  const trackHeight = ref(parseInt(localStorage.trackH || '380'));
  watchEffect(() => {
    localStorage.attrW = attrWidth.value;
    localStorage.trackH = trackHeight.value;
  });

  return {
    hideSubMenu,
    isLoading,
    pageTitle,
    isDark,
    attrWidth,
    trackHeight
  };
});

调用方法

javascript 复制代码
import { usePageState } from "../usePageState";
private store = usePageState();
console.log('ffff.isDark= ',this.store.isDark)

无厘头 - tsconfig.json 片段(支持 @别名)

javascript 复制代码
{
  "compilerOptions": {
    "baseUrl": ".",
    "paths": {
      "@/*": ["src/*"]
    }
  }
}

多个Vue 文件可公用一个状态

例如,可用于当前金币,任务列表啊,和技能等级等等;

即使是列表,也是公用存储所有的数据,按照item _id 获取单个数据,再一行行显示;

没那么简单

javascript 复制代码
import { useUserStore } from '@/stores/user'
import { createPinia } from 'pinia'
import { createApp } from 'vue'
import App from './App.vue'

// ❌ 这里会报错,因为 pinia 还没创建
const userStore = useUserStore()

const pinia = createPinia()
const app = createApp(App)
app.use(pinia)

app.mount('#app')

也就是要初始化一下,之前一直是 AI 做的,所以根本不清楚

以为 import 即可用,不是的,要初始化

javascript 复制代码
import { useUserStore } from '@/stores/user'
import { createPinia } from 'pinia'
import { createApp } from 'vue'
import App from './App.vue'

const pinia = createPinia()
const app = createApp(App)
app.use(pinia)

// ✅ 在 app.use(pinia) 之后调用才安全
const userStore = useUserStore()

无厘头-参考:Unity插件2D Tilemap Editor入门

之后再用AI做一个地图工具吧,暂时没有Tilemap 地图的需求

https://www.youtube.com/watch?v=hx3ieBzVNg0

相关推荐
半生过往16 小时前
Vue i18n 国际化全套适配实战:一步一步从零到工程化落地
vue·il8n
志尊宝1 天前
Vue3 零基础每日笔记(035):什么是 Composables——mixin 之死与逻辑复用新方案
笔记·vue·html·前端开发·软件开发
志尊宝1 天前
Vue3 零基础每日笔记(030):动态组件与 keep-alive——切换组件与页面缓存
笔记·vue·html·前端开发·软件开发
2401_868534781 天前
网络安全法规
安全·中间件
志尊宝1 天前
Vue3 零基础每日笔记(029):插槽 slot 三连——默认、具名、作用域一次讲透
前端·javascript·vue.js·vue·前端开发
尾善爱看海1 天前
Vue 面试收官篇:SSR、性能优化落地、30 道高频面试题精讲(附标准答案)
前端·javascript·vue.js·面试·vue
JIngles1232 天前
用 Dart 通过 S3 API 操作 MinIO:文件上传与下载 Demo
中间件·minio·存储
caoerzhong2 天前
JeeWMS 开源仓库管理系统 GPL-3.0 合规指南:Java WMS 二次开发前必须弄清的授权边界
java·开发语言·开源·vue
caoerzhong3 天前
JeeWMS 开源仓库管理系统权限与域验证解析:Java WMS 如何把数据权限管到仓、货主与人
java·python·开源·vue