cat dad
cat dad

Reputation: 318

How do you pass data to react components from express or koa without renderToString?

I'm unable to use React's server side rendering due to my use of client side libraries such as reqwest. I would like to pass some data to my react components, however. Is there a way to do this?

Upvotes: 1

Views: 759

Answers (1)

Brigand
Brigand

Reputation: 86270

The easiest way to do this is by having api-client.js and api.js. In your browserify/webpack config you set up a client side version. For browserify put this in your package.json (feel free to edit and add webpack).

"browser": {
  "./path/to/api.js": "path/to/api-client.js"
}

The second option is better in my opinion, but more difficult to implement. You create an abstract representation of your API that works like this:

var comments = require('./api').get('comments');
comments.getById('7').then(function(comment){ ... });
comments.create({...}).then(...);

On the server api.js simply calls the correct functions, which all return promises. On the client it returns a promise, makes an ajax request to the server, which calls these functions, and sends back the response, and the api client resolves/rejects its promise.

This allows the api to automatically work, and allows you to do additional things like track unfulfilled promises, and pre-populate state on the client, etc. (see react-async for example).

Upvotes: 2

Related Questions