Вы инициализировали состояние строкой useState("red");
, а затем обновили состояние до объекта с помощью setNav({ back });
Чтобы решить эту проблему, просто измените его на setNav(back)
Между прочим - прослушивание событий прокрутки может быть запаздывающим, поэтому вы можете захотеть «задушить» событие.
импортировать газ из loda sh или просто скопировать и вставить эту функцию: https://gist.github.com/abhinavnigam2207/a147abe0213d60467abacd33db7c6d2e
Затем вы используете его, заключая в него свою функцию, например:
useEffect(() => {
window.addEventListener(
"scroll",
throttle(() => {
const back = window.scrollY < 70 ? "red" : "blue";
setNav(back);
}, 100)
);
});