# 用户类型独立存储功能说明 ## 功能概述 将用户类型 (`user_type`) 从 `userInfo` 中分离出来,单独存储到本地存储中,确保用户类型在页面刷新后仍然保持。 ## 实现方案 ### 1. 独立存储字段 ```javascript // store/user.js const state = () => ({ // ... 其他字段 userType: getStorage('userType') || 1 // 单独存储用户类型,默认为卖家 }) ``` ### 2. 存储键名 - **用户类型存储键**: `userType` - **存储位置**: 本地存储 (localStorage) - **默认值**: `1` (卖家) ### 3. 用户类型定义 - `1`: 卖家 - `2`: 买家 ## 核心方法 ### 设置用户类型 ```javascript // 设置为买家 useUser.setUserType(2); // 设置为卖家 useUser.setUserType(1); ``` ### 获取用户类型 ```javascript const userType = useUser.getUserType(); // 返回: 1 或 2 ``` ### 判断用户类型 ```javascript const isBuyer = computed(() => { return useUser.getUserType() === 2; }); ``` ## 存储机制 ### 1. 数据持久化 - 用户类型存储在 `localStorage` 中,键名为 `userType` - 页面刷新、应用重启后数据仍然保持 - 不受 `userInfo` 更新影响 ### 2. 数据同步 - 设置用户类型时自动同步到本地存储 - 应用启动时从本地存储读取用户类型 - 退出登录时清除用户类型存储 ### 3. 默认行为 - 首次使用默认为卖家类型 (`1`) - 退出登录后重置为卖家类型 - 未登录状态下根据页面路径判断 ## 使用场景 ### 1. 用户模式切换 ```javascript // 切换到买家模式 const switchToBuyer = () => { useUser.setUserType(2); uni.reLaunch({ url: '/pagesBuyer/home/index' }); }; // 切换到卖家模式 const switchToSeller = () => { useUser.setUserType(1); uni.reLaunch({ url: '/pages/index/index' }); }; ``` ### 2. 导航栏显示 ```javascript // Tabbar 组件中根据用户类型显示不同导航 const currentNavList = computed(() => { if (userInfo.value && Object.keys(userInfo.value).length > 0) { return isBuyer.value ? buyerNavList.value : navList.value; } // 未登录时根据页面路径判断 const currentPath = getCurrentPages()[getCurrentPages().length - 1].route; const isBuyerPage = currentPath.includes("pagesBuyer"); return isBuyerPage ? buyerNavList.value : navList.value; }); ``` ## 优势 ### 1. 数据独立性 - 用户类型与用户信息分离 - 不受用户信息更新影响 - 避免数据冲突 ### 2. 持久化保证 - 页面刷新后用户类型保持不变 - 应用重启后状态保持 - 用户体验更佳 ### 3. 灵活控制 - 可以独立控制用户类型 - 支持动态切换 - 便于扩展更多用户类型 ## 注意事项 1. **存储键名**: 使用 `userType` 作为存储键名,避免与其他数据冲突 2. **默认值**: 始终设置默认值为 `1` (卖家),确保应用正常运行 3. **清理机制**: 退出登录时清除用户类型存储,避免数据残留 4. **兼容性**: 保持与原有代码的兼容性,不影响现有功能 ## 调试信息 在买家端首页添加了调试信息显示当前用户类型: ```vue 当前用户类型: {{ userType === 1 ? '卖家' : '买家' }} ({{ userType }}) ``` 可以通过这个信息验证用户类型是否正确存储和显示。