Isomorphic Flux - получить данные на сервере для компонентов

В своих последних приложениях я использовал Flux (с flummox — http://acdlite.github.io/flummox) на сервер по запросу сделать изоморфный рендеринг. В целом это выглядело следующим образом:

app.use(createFluxPerRequest);
app.get('/some-route', (req, res) => {
    api.getData(data => {
       req.flux.getActions('items').receiveItems(data);
       next();
    });
});
app.use((req, res) => {
    ReactRouter.run(routes, req.url, Handler => {
        res.render('base', {
            snapshot: new Buffer(req.flux.serialize(), 'utf-8').toString('base64'),
            appString: React.renderToString(
               React.createElement(Handler, { flux: req.flux })
            )
        });
    });
});

Как видите, я получаю данные через сервисы API, однако некоторые компоненты React делают запросы на клиенте самостоятельно.

Они делают это, позвонив, например. flux.getActions('items').getSomeDataAsync действие в компонентах контейнера (в методе componentDidMount жизненного цикла).

Мой вопрос: возможно ли (из вашего опыта) иметь некоторый метод внутри компонента контейнера, который будет вызываться на сервере для вызова внутри него асинхронных действий?


person Kosmetika    schedule 17.06.2015    source источник


Ответы (2)


Проверьте react-nexus

Несмотря на то, что он все еще находится в стадии разработки, я думаю, что это «ответит» на ваш вопрос.

Мы хотим продолжать извлекать данные из компонентов, но эти данные также, возможно, визуализируются на стороне сервера - вот где «изоморфность» действительно будет означать что-то реагировать

Жаль, что это изоморфное слово было раскручено еще до решения этой проблемы.

person Ben    schedule 13.07.2015

Да, я использовал изоморфный API, который можно вызывать с сервера и клиента в большом изоморфном SPA на основе реакции.

Эта библиотека позволяет создавать изоморфные API-интерфейсы и повторно использовать их в клиенте и сервере, не раздувая и не ломая пакет. Это то, что мы сейчас используем в большом одностраничном приложении.

Он называется изоморфин, и вы можете найти его здесь: https://github.com/d-oliveros/isomorphine< /а>.

Отказ от ответственности: я являюсь автором этой библиотеки.

person David Oliveros    schedule 28.07.2015