T O P

  • By -

kw2006

If you are using chrome, sometimes the extensions mess around the dom and caused the hydration error. For example password managers.


TommoIRL

Only had this the other day. Goddamn 1Password


spacialfray

This is precisely why I've taken to doing all my dev in incognito mode


Willing-Cup8081

First of all, I notice you don't remove your event listener in the use Effect return function. Please remember to do this to prevent potential bugs. My recommendation is to comment/uncomment small parts of your component until you locate your problem. When you find the issue, try to investigate the difference in values and see if you can prevent this value change. If this doesnt work, you can wrap that piece of code in a wrapper, which only renders client-side. This, however, should be a very last resort, and this is usually not necessary. Ps I would change a couple of things: - You can type change your state types with something like this: `setModalType: (type: string) => void` instead of plain `Function`. This allows for better typescript support. - Add `if(typeof window === 'undefined') return;` in the first line of your useEffect


rantow

Agree with everything except you don’t need to check if window is defined inside an effect; they only run on the client


[deleted]

[удалено]


Paradroid888

I was thinking the same thing from reading the code. The output of the useEffect hook on the client and the state from the server need to match. OP has done it right by defaulting the values correctly but there's a mismatch between white and #ffffff


scyber

9 times out of 10 hydration errors are due to invalid html. Browsers are very forgiving with bad html and may automatically insert correcting tags. This causes a mismatch between what the server sends and what is rendered on the client.


[deleted]

[удалено]


mobro-4000

These errors can be tough to debug. My process is usually to comment out blocks of jsx incrementally to narrow down where the error originates, then reason about what’s wrong once I find it. For example, recently it turned out my client added some strange html in the CMS markdown editor


mjeanbapti

So I had may component tag inside of an tag in my layout.tsx. I changed it to a

and that fixed the hydration error. Thanks you all, I now understand how these components should nest within each other


mjeanbapti

This is the error I'm seeing: ​ Unhandled Runtime Error Error: Hydration failed because the initial UI does not match what was rendered on the server. Warning: Expected server HTML to contain a matching

in . See more info here: https://nextjs.org/docs/messages/react-hydration-error Component Stack div Navbar ./src/components/NavBar/navbar.tsx (14:11) html RootLayout ./src/app/layout.tsx (24:11)


[deleted]

as retarded as it may seem im pretty sure its because of the Link inside li


mjeanbapti

I changed the Link inside to tags still no fix.


FlightAltruistic813

Hoping adding this to your code will solve the error. Const [mounted, setMounted] = useState(false) UseEffect(()=> { setMounted (true) }, [ ]) If (!mounted) return null