You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
5.4 KiB
5.4 KiB
🔧 Header组件未使用变量修复
问题描述
在src/pages/index/Header.tsx
中存在多个未使用的变量和导入,导致TypeScript警告。
🔍 发现的问题
1. 未使用的Hook返回值
// 问题代码 ❌
const {
getWebsiteName,
getWebsiteLogo,
loading: shopLoading // ❌ 未使用
} = useShopInfo();
2. 未使用的状态变量
// 问题代码 ❌
const [userInfo, setUserInfo] = useState<User>() // ❌ 未使用
const [showBasic, setShowBasic] = useState(false) // ❌ 基本未使用
3. 未使用的导入
// 问题代码 ❌
import {Popup, Avatar, NavBar} from '@nutui/nutui-react-taro' // Popup未使用
import {User} from "@/api/system/user/model"; // User类型未使用
4. 未使用的组件
// 问题代码 ❌
<Popup
visible={showBasic} // showBasic状态已移除
position="bottom"
style={{width: '100%', height: '100%'}}
onClose={() => {
setShowBasic(false)
}}
>
<div>车辆信息</div> // 内容也不相关
</Popup>
🔧 修复方案
1. 移除未使用的Hook返回值
修复前 ❌
const {
getWebsiteName,
getWebsiteLogo,
loading: shopLoading // 未使用
} = useShopInfo();
修复后 ✅
const {
getWebsiteName,
getWebsiteLogo
} = useShopInfo();
2. 移除未使用的状态变量
修复前 ❌
const [userInfo, setUserInfo] = useState<User>() // 未使用
const [IsLogin, setIsLogin] = useState<boolean>(true)
const [showBasic, setShowBasic] = useState(false) // 基本未使用
const [statusBarHeight, setStatusBarHeight] = useState<number>()
修复后 ✅
const [IsLogin, setIsLogin] = useState<boolean>(true)
const [statusBarHeight, setStatusBarHeight] = useState<number>()
3. 清理用户信息处理逻辑
修复前 ❌
getUserInfo().then((data) => {
if (data) {
setIsLogin(true);
setUserInfo(data) // 设置未使用的状态
console.log('用户信息>>>', data.phone)
// ...
}
})
修复后 ✅
getUserInfo().then((data) => {
if (data) {
setIsLogin(true);
console.log('用户信息>>>', data.phone)
// ...
}
})
4. 移除未使用的组件
修复前 ❌
</NavBar>
<Popup
visible={showBasic}
position="bottom"
style={{width: '100%', height: '100%'}}
onClose={() => {
setShowBasic(false)
}}
>
<div style={{padding: '12px 0', fontWeight: 'bold', textAlign: 'center'}}>车辆信息</div>
</Popup>
修复后 ✅
</NavBar>
5. 清理导入语句
修复前 ❌
import {Popup, Avatar, NavBar} from '@nutui/nutui-react-taro'
import {User} from "@/api/system/user/model";
修复后 ✅
import {Avatar, NavBar} from '@nutui/nutui-react-taro'
📊 修复统计
项目 | 修复前 | 修复后 | 减少 |
---|---|---|---|
代码行数 | 194行 | 179行 | -15行 |
状态变量 | 4个 | 2个 | -2个 |
导入项 | 多个未使用 | 只保留使用的 | 清理完成 |
组件 | 包含未使用Popup | 只保留必要组件 | 简化完成 |
✅ 修复效果
修复前 ❌
⚠️ 多个TypeScript警告
🔧 未使用的变量和导入
📝 代码冗余,可读性差
🐛 潜在的维护问题
修复后 ✅
✅ 无TypeScript警告
🔧 代码简洁,只保留必要部分
📝 提高代码可读性
🚀 减少维护负担
🎯 保留的功能
修复后保留的核心功能:
1. 商店信息显示
const { getWebsiteName, getWebsiteLogo } = useShopInfo();
// 在UI中使用
<Avatar src={getWebsiteLogo()} />
<span>{getWebsiteName()}</span>
2. 用户登录状态管理
const [IsLogin, setIsLogin] = useState<boolean>(true)
// 根据登录状态显示不同UI
{!IsLogin ? (
// 未登录UI
) : (
// 已登录UI
)}
3. 手机号授权功能
const handleGetPhoneNumber = ({detail}) => {
// 处理手机号授权逻辑
};
<Button open-type="getPhoneNumber" onGetPhoneNumber={handleGetPhoneNumber}>
4. 状态栏高度适配
const [statusBarHeight, setStatusBarHeight] = useState<number>()
// 在NavBar中使用
<NavBar style={{marginTop: `${statusBarHeight}px`}} />
🛠️ 代码质量改进
1. 减少内存占用
- 移除未使用的状态变量
- 减少不必要的重渲染
2. 提高可维护性
- 代码更简洁明了
- 减少潜在的bug
3. 优化构建大小
- 移除未使用的导入
- 减少打包体积
🧪 验证方法
1. 功能验证
- ✅ Logo和网站名称正常显示
- ✅ 登录状态切换正常
- ✅ 手机号授权功能正常
- ✅ 状态栏适配正常
2. 代码质量验证
- ✅ 无TypeScript警告
- ✅ 无ESLint错误
- ✅ 代码简洁清晰
3. 性能验证
- ✅ 组件渲染正常
- ✅ 无不必要的重渲染
- ✅ 内存使用优化
🎉 总结
通过清理未使用的变量、导入和组件:
- ✅ 消除所有TypeScript警告
- ✅ 减少15行代码
- ✅ 保持所有核心功能
- ✅ 提高代码质量和可维护性
- ✅ 优化性能和构建大小
现在Header组件更加简洁、高效,没有任何警告! 🚀