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.
114 lines
3.4 KiB
114 lines
3.4 KiB
|
1 month ago
|
# 已知问题和警告说明
|
|||
|
|
|
|||
|
|
## ⚠️ Web 平台警告
|
|||
|
|
|
|||
|
|
### 警告信息
|
|||
|
|
```
|
|||
|
|
λ WARN props.pointerEvents is deprecated. Use style.pointerEvents
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 原因
|
|||
|
|
这个警告来自 `[email protected]` 库内部,是该库在处理某些 React Native 组件时产生的弃用警告。具体来说:
|
|||
|
|
|
|||
|
|
- React Native Web 正在从使用 `props.pointerEvents` 迁移到 `style.pointerEvents`
|
|||
|
|
- 这是库内部的实现细节,不是我们应用代码的问题
|
|||
|
|
- 警告来自 `View` 组件在 Web 平台上的渲染过程
|
|||
|
|
|
|||
|
|
### 影响
|
|||
|
|
- ✅ **不影响应用功能** - 应用在 Web 平台上完全正常运行
|
|||
|
|
- ✅ **不影响性能** - 只是一个弃用提示
|
|||
|
|
- ✅ **不影响移动端** - 只在 Web 平台出现
|
|||
|
|
|
|||
|
|
### 解决方案
|
|||
|
|
|
|||
|
|
#### 方案 1:忽略警告(推荐)
|
|||
|
|
这个警告是无害的,可以安全忽略。等待 `react-native-web` 库更新到新版本后会自动解决。
|
|||
|
|
|
|||
|
|
#### 方案 2:抑制警告
|
|||
|
|
如果你想在开发时隐藏这个警告,可以在 `app.json` 中添加配置:
|
|||
|
|
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"expo": {
|
|||
|
|
"web": {
|
|||
|
|
"bundler": "metro",
|
|||
|
|
"output": "static",
|
|||
|
|
"favicon": "./assets/images/favicon.png"
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
或者在代码中添加警告过滤(不推荐):
|
|||
|
|
|
|||
|
|
```typescript
|
|||
|
|
// 在 app/_layout.tsx 顶部添加
|
|||
|
|
if (typeof window !== 'undefined') {
|
|||
|
|
const originalWarn = console.warn;
|
|||
|
|
console.warn = (...args) => {
|
|||
|
|
if (args[0]?.includes?.('pointerEvents is deprecated')) {
|
|||
|
|
return;
|
|||
|
|
}
|
|||
|
|
originalWarn(...args);
|
|||
|
|
};
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
#### 方案 3:等待库更新
|
|||
|
|
`react-native-web` 团队正在积极维护这个库,未来版本会解决这个警告。你可以:
|
|||
|
|
|
|||
|
|
1. 关注 [react-native-web 更新日志](https://github.com/necolas/react-native-web/releases)
|
|||
|
|
2. 定期运行 `pnpm update react-native-web` 更新到最新版本
|
|||
|
|
|
|||
|
|
### 相关信息
|
|||
|
|
|
|||
|
|
- **库版本**: [email protected]
|
|||
|
|
- **Expo 版本**: ~54.0.22
|
|||
|
|
- **React Native 版本**: 0.81.5
|
|||
|
|
- **问题追踪**: 这是 react-native-web 库的已知问题,正在逐步迁移中
|
|||
|
|
|
|||
|
|
### 验证
|
|||
|
|
你可以通过以下方式验证应用功能正常:
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# 启动 Web 版本
|
|||
|
|
pnpm web
|
|||
|
|
|
|||
|
|
# 在浏览器中打开 http://localhost:8081
|
|||
|
|
# 检查所有功能是否正常工作
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 📝 其他注意事项
|
|||
|
|
|
|||
|
|
### 开发模式下的其他常见警告
|
|||
|
|
|
|||
|
|
#### 1. Metro Bundler 警告
|
|||
|
|
某些依赖可能会产生 Metro 打包警告,这些通常可以安全忽略。
|
|||
|
|
|
|||
|
|
#### 2. React 19 新特性警告
|
|||
|
|
由于使用了 React 19.1.0,某些旧的 API 可能会有弃用警告。
|
|||
|
|
|
|||
|
|
#### 3. Expo Router 类型警告
|
|||
|
|
TypeScript 可能会对某些 Expo Router 的动态路由产生类型警告,这是正常的。
|
|||
|
|
|
|||
|
|
### 生产构建
|
|||
|
|
在生产构建中,这些警告不会出现,因为:
|
|||
|
|
- 生产构建会移除所有开发时的警告
|
|||
|
|
- 代码会被优化和压缩
|
|||
|
|
- 只有关键错误会被记录
|
|||
|
|
|
|||
|
|
### 如何报告问题
|
|||
|
|
如果你遇到其他问题:
|
|||
|
|
|
|||
|
|
1. 检查是否是已知问题(查看本文档)
|
|||
|
|
2. 查看 [Expo 文档](https://docs.expo.dev/)
|
|||
|
|
3. 搜索 [Expo GitHub Issues](https://github.com/expo/expo/issues)
|
|||
|
|
4. 在项目中创建 issue 或联系开发团队
|
|||
|
|
|
|||
|
|
## ✅ 总结
|
|||
|
|
|
|||
|
|
**当前的 `pointerEvents` 警告是安全的,可以忽略。** 应用在所有平台(iOS、Android、Web)上都能正常运行。这只是一个库内部的迁移提示,不影响你的开发和生产使用。
|
|||
|
|
|
|||
|
|
如果你想要一个完全没有警告的开发体验,可以等待 `react-native-web` 的下一个主要版本更新,或者使用上述方案 2 临时抑制警告。
|
|||
|
|
|