DaniilSokolyuk / NodeReact.NET

Library to render React library components on the server-side with C# as well as on the client.
MIT License
44 stars 5 forks source link

Feature Request: Render functions like ReactJS.Net #5

Open xtroncode opened 4 years ago

xtroncode commented 4 years ago

Hi, I want to try this library but the lack of support for Render functions is a blocker for me. Can it be implemented in NodeReact.Net ? I'd be happy to help.

rshackleton commented 1 year ago

@DaniilSokolyuk is there any likelihood that this would be looked into?

The library is very promising but not having the ability to support CSS-in-JS libraries via Render Functions is also a blocker for me.

rshackleton commented 1 year ago

Just having a very quick look and I guess the approach would be much trickier whilst supporting streaming.

https://styled-components.com/docs/advanced#streaming-rendering

Perhaps a custom interop would be needed to coordinate the renderToNodeStream wrapper?

DaniilSokolyuk commented 1 year ago

We're using the new 'renderToPipeableStream' API. Additionally, we have the ability to render an entire page in a React component, like this https://github.com/DaniilSokolyuk/NodeReact.NET/blob/master/NodeReact.Sample.Streaming/ClientApp/components/App.jsx

DaniilSokolyuk commented 1 year ago

Issue is here https://github.com/styled-components/styled-components/issues/3658

rshackleton commented 1 year ago

That is interesting, I was looking at whether we could use this to migrate away from ReactJS.NET and retain the island architecture approach vs rendering the entire site as a React app.

My concern is enabling SSR for React components within a .NET site which needs to run on Razor in order to interface with the CMS.

I suppose the CSS-in-JS issue could be circumvented by using a library that doesn't have runtime JS like Linaria or Vanilla Extract, or using something like Tailwind.

DaniilSokolyuk commented 1 year ago

I will try next week to make a legacy mode that uses renderToString

rshackleton commented 1 year ago

That would be great for backwards compatibility. I'm going to trial it on a project which is currently using Tailwind. The lack of render functions shouldn't be an issue in this case.

LorenDorez commented 1 year ago

Just an update here. I have a working POC to handling CSS-in-JSS libraries like Styled and Emotion. I got the ideas from the Emotion creator as he worked with Styled, NextJS and the react devs to try to find a workaround until some new APIs posisble come out from the React devs.

I needed this support for MUI which I use heavily. the POC is pretty ugly but was waiting on another issue on posted to see if a pull request would be allowed. I havent heard back yet so i might just fork this project and clean up my POC

rshackleton commented 1 year ago

@LorenDorez please share your fork here if you do. 👍

ellinge commented 5 months ago

I am also interested in in a fork for render functions support. Had to go back to ReactJs.NET in a project ported from framework to .Net 8. I did not see a clear solution of how to fix it in another way currently with NodeReact.

But since ReactJs.NET is in maintenance mode and I’ve already had to fork it for React 18-support it would be better if one could migrate to this instead.