const [hiddenData, setHiddenData] = useState(server.hidden_data);
const [hiddenProfile, setHiddenProfile] = useState(server.hidden_profile);
const [isChanged, setIsChanged] = useState(false);
useEffect(() => {
if (hiddenData !== server.hidden_data
|| hiddenProfile !== server.hidden_profile) {
setIsChanged(true);
} else {
setIsChanged(false);
}
}, [hiddenData, server.hidden_data, hiddenProfile, server.hidden_profile]);
return (
<>
{isChanged && <div>Были внесены изменения, сохраните их</div>}
</>
);
...
<div>
{% for author in authors %}
<h1>{{ author.first_name }}</h1>
{% for book in author.book_set.all %}
<h4>{{ book.title }}</h4>
{% empty %}
<p>Похоже у этого автора нет книг :(</p>
{% endfor %}
{% endfor %}
</div>
...
Вы не используете peerDependencies в проекте, который не собираетесь публиковать.
Если вы публикуете свой проект, то он необязательно должен содержать peerDependencies, а содержит его только в том случае, если пакеты, использующиеся у вас и у пользователя должны быть в 1 экземпляре.
И установка таких пакетов выглядит следующим образом.
Без peerDependencies:
npm i my-awesome-package
С peerDependencies:
npm i my-awesome-package react-dom
React DOM в данном случае находится в peerDependencies
my-awesome-package
.