Итак, у меня есть node.js + реагировать и реагировать-маршрутизатор, и я хочу сгенерировать маршруты из списка, взятого из базы данных. Как я могу сделать что-то вроде этогоКак получить список маршрутов response.js из базы данных?
<Route component={App}>
<Route name="Home" path="/" component={Page}/>
<Route name="Page1" path="/page1" component={Page}/>
<Route name="Page2" path="/page2" component={Page}/>
...
</Route>
и использовать его в моей заявке? Мои текущие файлы выглядеть следующим образом:
server.js
var express = require('express');
var bodyParser = require('body-parser');
...
var routes = require('./app/routes');
...
app.use(function(req, res) {
Router.match({ routes: routes.default, location: req.url }, function(err, redirectLocation, renderProps) {
if (err) {
res.status(500).send(err.message)
} else if (redirectLocation) {
res.status(302).redirect(redirectLocation.pathname + redirectLocation.search)
} else if (renderProps) {
var html = ReactDOM.renderToString(React.createElement(Router.RoutingContext, renderProps));
//var page = swig.renderFile('views/index.html', { html: html });
res.status(200).send('<!DOCTYPE html><html lang="ro"><head><link rel="stylesheet" href="./foundation-6/css/foundation.min.css"><link rel="stylesheet" href="./css/main.css"></head><body><div id="app"></div><script src="/socket.io/socket.io.js"></script></script><script src="./js/vendor.js"></script><script src="./js/vendor.bundle.js"></script><script src="./js/bundle.js"></script><script src="./foundation-6/js/foundation.min.js"></script><script>$(document).foundation();var socket = io();</script></body></html>');
} else {
res.status(404).send('Page Not Found')
}
});
});
routes.js
import React from 'react';
import {Route} from 'react-router';
import App from './components/App';
import Page from './components/Page';
export default (
<Route component={App}>
<Route name="Home" path="/" component={Page}/>
<Route name="Test" path="/test" component={Page}/>
</Route>
);
Редактировать
Я просто хочу, чтобы получить список страниц. Все страницы будут использовать один и тот же компонент, но у них будет другой заголовок и контент. Я могу запросить базу данных, но я не знаю, как горячо передавать объект на responsejs и генерировать маршруты на основе этого.
Первый вопрос: почему вы пытаетесь сохранить это в базе данных? Вы пытаетесь сохранить только маршруты там (почему?), Или вы также пытаетесь сохранить компоненты там? Кроме того, с чем вы столкнулись? Запрос базы данных? Итерирование по набору записей? Возможно, попробуйте разбить задачи, чтобы сделать это на мелкие кусочки и попытаться решить их индивидуально. –
Нет. Я просто хочу получить список страниц. Как я сказал в примере, все они будут использовать один и тот же компонент, но у них будет другой заголовок и контент. Я могу запросить базу данных, но я не знаю, как горячо передавать объект на responsejs и генерировать маршруты на основе этого. –
Вы можете попробовать использовать простые объекты, как указано в нижней части страницы. Тогда проблема сводится к преобразованию вывода базы данных в простой объект js: https://github.com/reactjs/react-router/blob/master/docs/guides/RouteConfiguration.md#user-content-configuration-with -plain-маршруты –