React Js localStorage

Делал обычный счётчик просмотренного манямэ. До закрытия/перезагрузки страницы я сохраняю все обьекты массива в localStorage. Проблема заключается в том, что я не могу передать в массив данные из localStorage. Ошибка не вылазит, но по консоль логу видно, что массив остается пустой. react-beforeunload

let [animes, setAnimes] = React.useState([

  ])
  useBeforeunload(() =>{ // хук из react-beforeunload
    delete localStorage.animeS
      localStorage.animeS = JSON.stringify({...animes}); // заношу обьекты массива
      if(animes.length > 0){
        parsed = JSON.parse(localStorage.animeS)
      }
  })
    if(localStorage.animeS !== '{}' && localStorage.animeS !== undefined && c !== 1){
      // если в массиве что-то есть
      parsed = JSON.parse(localStorage.animeS) // читаю json
      console.log('Start') // start
      setAnimes(animes.concat({ // дубликатом меняю массив
        parsed
      }))
      console.log(animes) // array []
      console.log(parsed) // Object { 0: {…}, 1: {…} }
      c = 1
    }
    else if(c !== 1){
      console.log('nema')
      console.log(JSON.parse(localStorage.animeS))
      c = 1
    }


  function addAnime(title){
    const dataDay = new Date().getDate();
    const dataMonth = new Date().getMonth()
    const dataYear = new Date().getFullYear()
    const datas = [dataDay + '.', '0' +(dataMonth + 1) + '.', dataYear];
    setAnimes(animes.concat({
      title,
      id: animes.length + 1,
      created: datas
    }))
  }

Ответы (1 шт):

Автор решения: Sergei Kirjanov

Попробуйте весь if с setAnimes делать из useEffect. Не стоит менять стейт в рендере. На момент лога стейт мог не успеть смениться.

→ Ссылка