Я применял. Что конкретно интересует?
Работает в связке с Express. Сама отрисовка - middleware. Вызываем в скрипте родительский компонент (в моём случае, это маршрутизатор), задаём контекст - данные из БД, URL, отрисовываем компонент в статическую строку разметки и выводим эту строку. Всё просто :)
Для маршрутизатора использую
react-router
Ниже копипаст из проекта:
var getMarkup = function (req, data) {
return new Promise(function (res, rej) {
var location = req.url;
Router.run(routes, location, function (Handler, state) {
var isNotFound = detectNotFound(state);
if (isNotFound) {
rej();
} else {
var handler = React.createElement(Handler, {flux: flux, data: data});
var markup = React.renderToString(handler);
res(markup);
}
});
});
};
По сути, самые важные строчки:
var handler = React.createElement(Handler, {flux: flux, data: data});
var markup = React.renderToString(handler);
res(markup);
hander - компонент React, который получился, исходя из запрашиваемого URL
flux - в моём случае это Fluxxor (его объект помещается в корневой компонент и идёт сквозь всё дерево через context)
data - объект JSON с данными. Данные берутся из БД.
Ссылка на проект, который мне помог понять это всё:
react-isomorphic-video-game-search