Вот комментарий от одного человека: Поля стейта как правило делают иммутабельными, и когда нужно поменять стейт, то делают copy, (это как раз позволяет сравнивать 2 стейта на равенство)
Иммутабельность в этом случае понимается, что все поля объекта val, а ссылка на объект var copy не обязателен. Можно другими способами получать новый объект и присваивать в стейт