fix: use isLiked/isFavorited from API data for initial state
- Get store state separately from API data - Merge strategy: store takes priority (for optimistic updates), fallback to API data - Use item.isLiked and item.isFavorited for initial state - Match the implementation pattern used in home page
This commit is contained in:
parent
d0b8a29698
commit
b716198d4b
|
|
@ -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)
|
||||
|
|
|
|||
Loading…
Reference in New Issue