cssinjs/jss

themed useCreateStyles leaks style tags in StrictMode

Aperta

#1332 aperta il 20 apr 2020

 (1 commento) (1 reazione) (0 assegnatari)JavaScript (434 fork)batch import
bughelp wanted

Metriche repository

Star
 (7000 stelle)
Metriche merge PR
 (Metriche PR in attesa)

Descrizione

Expected behavior: <style> elements get disposed when re-rendering in StrictMode.

Describe the bug: When using themed styles (possibly prop-based as well) re-rendering a component using useStyles with a new theme will leak their <style> elements.

This is possibly due to useStyles managing the sheet during render but unmanaging it in a effect cleanup. A component can render multiple times (in concurrent and strict mode) before an effect is scheduled.

Codesandbox link: https://codesandbox.io/s/determined-wood-8d0s7?file=/src/App.js:513-622

Click "rerender" and see that the number of <style> element grows with every "rerender" click.

Versions (please complete the following information):

  • react-jss: 10.1.1
  • Browser [e.g. chrome, safari]: Chrome 81
  • OS [e.g. Windows, macOS]: Ubuntu 18.04
  • react: 16.13.1

Guida contributor