mirror of
https://github.com/pacnpal/thrilltrack-explorer.git
synced 2025-12-22 01:51:12 -05:00
feat: Implement comprehensive re-render optimizations
This commit is contained in:
@@ -643,16 +643,32 @@ export const QueueItem = memo(({
|
||||
</Card>
|
||||
);
|
||||
}, (prevProps, nextProps) => {
|
||||
// Custom comparison to prevent re-renders
|
||||
return (
|
||||
prevProps.item.id === nextProps.item.id &&
|
||||
prevProps.item.status === nextProps.item.status &&
|
||||
prevProps.actionLoading === nextProps.actionLoading &&
|
||||
prevProps.lockedSubmissions.has(prevProps.item.id) === nextProps.lockedSubmissions.has(nextProps.item.id) &&
|
||||
prevProps.currentLockSubmissionId === nextProps.currentLockSubmissionId &&
|
||||
prevProps.notes[prevProps.item.id] === nextProps.notes[nextProps.item.id] &&
|
||||
prevProps.notes[`reverse-${prevProps.item.id}`] === nextProps.notes[`reverse-${nextProps.item.id}`]
|
||||
);
|
||||
// Quick checks first (cheapest)
|
||||
if (prevProps.item.id !== nextProps.item.id) return false;
|
||||
if (prevProps.item.status !== nextProps.item.status) return false;
|
||||
if (prevProps.actionLoading !== nextProps.actionLoading) return false;
|
||||
if (prevProps.currentLockSubmissionId !== nextProps.currentLockSubmissionId) return false;
|
||||
if (prevProps.notes[prevProps.item.id] !== nextProps.notes[nextProps.item.id]) return false;
|
||||
if (prevProps.notes[`reverse-${prevProps.item.id}`] !== nextProps.notes[`reverse-${nextProps.item.id}`]) return false;
|
||||
|
||||
// Check lock status
|
||||
const prevLocked = prevProps.lockedSubmissions.has(prevProps.item.id);
|
||||
const nextLocked = nextProps.lockedSubmissions.has(nextProps.item.id);
|
||||
if (prevLocked !== nextLocked) return false;
|
||||
|
||||
// Deep comparison of content and other fields that affect rendering
|
||||
if (prevProps.item.reviewed_at !== nextProps.item.reviewed_at) return false;
|
||||
if (prevProps.item.reviewed_by !== nextProps.item.reviewed_by) return false;
|
||||
if (prevProps.item.reviewer_notes !== nextProps.item.reviewer_notes) return false;
|
||||
if (prevProps.item.assigned_to !== nextProps.item.assigned_to) return false;
|
||||
if (prevProps.item.locked_until !== nextProps.item.locked_until) return false;
|
||||
if (prevProps.item.escalated !== nextProps.item.escalated) return false;
|
||||
|
||||
// Content comparison (most expensive, do last)
|
||||
if (JSON.stringify(prevProps.item.content) !== JSON.stringify(nextProps.item.content)) return false;
|
||||
|
||||
// All checks passed - items are identical
|
||||
return true;
|
||||
});
|
||||
|
||||
QueueItem.displayName = 'QueueItem';
|
||||
|
||||
Reference in New Issue
Block a user