-
-
Notifications
You must be signed in to change notification settings - Fork 1.9k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
A better server rendering API? #23
Comments
@d6u Currently server-rendering is achieved using preact-render-to-string. It has similar limitations to the issue you linked, do you have any suggestions for working around those? Personally I do static pre-rendering, so async components are not part of my server-side pipeline. Plus with Preact my frontend bundles are small enough that often server-rendering is unnecessary (obviously this depends if you're building something content-centric, or using something like the application shell architecture). It might be worth throwing an issue into preact-render-to-string, though it seems like supporing async static rendering would be done via a module that straddles both |
@developit Thanks for your explanation. I see your argument (and I think it's valid). But for the topic of server rendering, I think the key is not async rendering. The problem can be easy solved by putting a placeholder in the rendered string, or break the rendered string apart, so the incomplete content can be inserted. class List extends Component {
render({items}) {
return (
<ul>{items.map(({id}) => <Item itemId={id} />)}</ul>
);
}
}
class Item extends Component {
render({itemId}) {
// need to fetch data for each item
return (
<li></li>
);
}
} Assuming Item needs to fetch data from server in order to display content. In the first render pass, we can just render the List on server. <ul>
<some-place-holder-for-item/>
<some-place-holder-for-item/>
<some-place-holder-for-item/>
</ul> After we got the data, we call |
There are some good demos of this now, I think we can close this ticket. That being said, streaming server rendering is definitely on the backlog. |
@developit any news? |
About streaming rendering? nope! I've not yet had a reason to need it - either I use preact-render-to-string (which is fast enough that streaming would only add overhead) or I render into |
Add support for features from Preact render tests
Render empty value if render returns false
Is it possible to do server rendering and repopulate on client side? Do you support async rendering as I mentioned here as one of the issues making React server rendering hard to use?
The text was updated successfully, but these errors were encountered: