Я бы подправил таким образом:
https://codepen.io/Noorama/pen/WNRaZqpКонечно, можно и лучше, но работает, как вам нужно, скорее всего.
Несколько замечаний: Вы в локалстор не можете хранить данные в формате булиан - там будет лежать строковое значение. И когда вы его считываете - вы получаете строку, а не true | false. Так же useEffect вам ненужен в данном контексте - вы можете получать данные в качестве дефолтного значения стейта напрямую прокинув в setState(defaultData). Еще вместо animation в css я использовал transition.