ReactSsr

object ReactSsr

Instructions for basic React SSR on the GraalVM:

  1. Bundle React JS into your application yourself.
  2. Use Expr.requireFileOnClasspath to load React JS files.
  3. Provide the above Exprs to ReactSsr.Setup.apply.
  4. Run the resulting Expr of above to initialise your AbstractGraalContext instance(s).
  5. Optionally call ReactSsr.setUrl if your component expects to read it (eg. has a router).
  6. Call ReactSsr.renderToString or ReactSsr.renderToStaticMarkup to render a component.

See ScalaGraal's tests for concrete usage examples.

class Object
trait Matchable
class Any

Type members

Classlikes

object Setup

Value members

Concrete methods

def renderToStaticMarkup(expr: String): Expr[String]

Similar to renderToString, except this doesn’t create extra DOM attributes that React uses internally, such as data-reactroot. This is useful if you want to use React as a simple static page generator, as stripping away the extra attributes can save some bytes.

Similar to renderToString, except this doesn’t create extra DOM attributes that React uses internally, such as data-reactroot. This is useful if you want to use React as a simple static page generator, as stripping away the extra attributes can save some bytes.

If you plan to use React on the client to make the markup interactive, do not use this method. Instead, use renderToString on the server and ReactDOM.hydrate() on the client.

Value Params
expr

A JS expression determining what to render.

Returns

An Expr that evaluates to a String of HTML.

def renderToString(expr: String): Expr[String]

Render a React element to its initial HTML. React will return an HTML string. You can use this method to generate HTML on the server and send the markup down on the initial request for faster page loads and to allow search engines to crawl your pages for SEO purposes.

Render a React element to its initial HTML. React will return an HTML string. You can use this method to generate HTML on the server and send the markup down on the initial request for faster page loads and to allow search engines to crawl your pages for SEO purposes.

If you call ReactDOM.hydrate() on a node that already has this server-rendered markup, React will preserve it and only attach event handlers, allowing you to have a very performant first-load experience.

Value Params
expr

A JS expression determining what to render.

Returns

An Expr that evaluates to a String of HTML.

def setUrl(url: String): Expr[Unit]

Sets window.location to an object representing the given URL.

Sets window.location to an object representing the given URL.

This is helpful but a better practice is to call WindowLocation.parse and handle the None case yourself.

Concrete fields

val setUserAgent: String => Expr[Unit]
val setWindowLocation: WindowLocation => Expr[Unit]