0

I'm trying to manage state using react cookies. If you hide the sidebar, true is saved, and it would be nice to have the sidebar automatically hidden on subsequent refreshes. Conversely, if it is in the expanded state, false is saved and it is in the expanded state when refreshed.

I wrote a simple code with this logic, but once it is hidden, even if it is expanded, it is still hidden when refreshed.

How do I fix this?

Below is a code sample.

function App() {
  const [openSide, setOpenSide] = useState(false);
  const [cookie, setCookie] = useCookies(['rememberSideBar']);
  const handleCookie = () => {
    setCookie('rememberSideBar', !cookie.rememberSideBar,{path: "/"});
  }
  useEffect(() => {
    // when have no cookie
    if(cookie.rememberSideBar == null)
      console.log("no cookie")
    //when cookie is exist
    else
    {
      if(cookie.rememberSideBar != openSide)
      setOpenSide(cookie.rememberSideBar)
    }
    console.log(openSide+"123"+cookie.rememberSideBar)
  },[])
  
  function handleSideBar(){
    //change state
    setOpenSide(!openSide)
    //cookie option
    setCookie('rememberSideBar', !openSide ,{path: "/"})
    console.log(openSide+"123"+cookie.rememberSideBar)
  }

  return (
    <div className="App">
      <CookiesProvider>
        <BrowserRouter>
          <HeaderSidbar openSide={openSide} setOpenSide={handleSideBar} />
          <Main openSide={openSide} />
        </BrowserRouter>
      </CookiesProvider>
    </div>
  );
}
gavi Su
  • 45
  • 6

0 Answers0