diff --git a/app/(tabs)/video.tsx b/app/(tabs)/video.tsx index 6966836..1ed0014 100644 --- a/app/(tabs)/video.tsx +++ b/app/(tabs)/video.tsx @@ -85,11 +85,17 @@ export const VideoItem = memo(({ item, videoHeight }: { item: TemplateDetail; vi const heartOpacity = useRef(new Animated.Value(0)).current const lastTap = useRef(0) - // 从 store 获取状态 - const liked = useTemplateLiked(item.id) ?? false - const favorited = useTemplateFavorited(item.id) ?? false - const likeCount = useTemplateLikeCount(item.id) ?? item.likeCount - const favoriteCount = useTemplateFavoriteCount(item.id) ?? item.favoriteCount + // 从 store 获取状态(用于乐观更新) + const storeLiked = useTemplateLiked(item.id) + const storeFavorited = useTemplateFavorited(item.id) + const storeLikeCount = useTemplateLikeCount(item.id) + const storeFavoriteCount = useTemplateFavoriteCount(item.id) + + // 合并策略:Store 优先(乐观更新),否则使用 API 数据 + const liked = storeLiked ?? item.isLiked ?? false + const favorited = storeFavorited ?? item.isFavorited ?? false + const likeCount = storeLikeCount ?? item.likeCount ?? 0 + const favoriteCount = storeFavoriteCount ?? item.favoriteCount ?? 0 // 使用 hooks 获取操作函数 const { like: onLike, unlike: onUnlike, loading: likeLoading } = useTemplateLike(item.id, item.likeCount)