Files
bw-expo-app/components/ui/back-button.tsx
imeepos eee280d9b3 🐛 修复视频播放器无限循环渲染问题
## 主要修复
- 修复 FullscreenMediaModal 和 FullscreenVideoModal 中的 useEffect 循环依赖
- 重构 VideoPlayer 组件的视频属性管理逻辑
- 优化 useVideoPlayer 的初始化回调机制

## 新增功能
- 新增标签 API 支持 (lib/api/tags.ts)
- 新增内容骨架屏组件 (components/profile/content-skeleton.tsx)
- 新增返回按钮组件 (components/ui/back-button.tsx)

## 改进优化
- 优化视频播放器的性能,避免重复初始化
- 修复 useEffect 依赖项导致的无限循环更新
- 完善类型定义和 API 接口

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-10 11:58:56 +08:00

40 lines
914 B
TypeScript

import Ionicons from '@expo/vector-icons/Ionicons';
import React from 'react';
import {
StyleProp,
StyleSheet,
TouchableOpacity,
TouchableOpacityProps,
ViewStyle,
} from 'react-native';
type BackButtonProps = {
onPress: () => void;
style?: StyleProp<ViewStyle>;
} & Omit<TouchableOpacityProps, 'style' | 'onPress'>;
export function BackButton({ onPress, style, accessibilityLabel = 'Go back', ...rest }: BackButtonProps) {
return (
<TouchableOpacity
{...rest}
accessibilityRole="button"
accessibilityLabel={accessibilityLabel}
onPress={onPress}
style={[styles.shell, style]}
>
<Ionicons name="chevron-back" size={22} color="#FFFFFF" />
</TouchableOpacity>
);
}
const styles = StyleSheet.create({
shell: {
width: 48,
height: 48,
borderRadius: 18,
borderWidth: 1,
alignItems: 'center',
justifyContent: 'center',
},
});