riot / ssr

Riot.js node Server Side Rendering
MIT License
32 stars 8 forks source link

fixed: missing CSS of sub-components when rendering asynchronously #34

Closed geonanorch closed 2 years ago

geonanorch commented 2 years ago

Currently when rendering asynchronously, only the CSS of the main component and of the sub-components statically included in the main component are rendered.

To demonstrate this I extended the ssr example to include a bit of CSS specific to each page and delayed the hydration, see PR#190 in riot/examples: until hydration takes place the page-local CSS is not applied.

I spent some time poking around the code and I eventually found a simple fix for this, even it it does not feel very elegant (because of the overwrite): CSS for all involved components will only be available once the initial asynchronous render completed (as opposed to the moment when the main component was created, in the current version). Re-generating the CSS after that render made the modified ssr example above work as expected.

I could not see any risk introduced by the change, since it just replaces the initial CSS with more CSS.

GianlucaGuarini commented 2 years ago

Ehy thank you, you are totally right. That's a bug and I will fix it in the next release. I am planning to make a new major release asap with a few breaking changes.

geonanorch commented 2 years ago

Very happy to be able to give back a little to Riot.js 😀