## 主要修复 - 修复 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>
40 lines
914 B
TypeScript
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',
|
|
},
|
|
});
|