我正在尝试构建一个符合最佳实践的同构 React 应用程序。我目前只是想为服务器找到一个好的系统。以下是我的一些要求:
要求
- 我想使用反应路由器
- 我试图避免使用通量架构,因为它对我的简单应用程序来说太过分了
- 我希望我的 React 组件是纯的,所以它们不应该将模型数据存储在它们的内部状态中
- React 组件也不应该自己获取它们需要的数据,这些数据应该通过
props
- 如果一个组件需要异步加载数据,那应该在渲染之前发生在服务器上
简单的示例应用程序
我做了一个小示例应用程序,应该说明我的问题/困惑:https ://github.com/maximilianschmitt/ipman
基本上,组件树如下所示:
RouteHandler
App
RouteHandler
Home
Ip
路由.js
'use strict';
const Router = require('react-router');
const App = require('./components/app');
const Home = require('./components/home');
const Ip = require('./components/ip');
const Route = Router.Route;
const routes = (
<Route handler={App}>
<Route name="home" path="/" handler={Home} />
<Route name="ip" path="/ip" handler={Ip} />
</Route>
);
module.exports = routes;
组件/ip.js
class Ip extends React.Component {
render() {
return <div>Your ip is: {this.props.ip || 'undefined'}</div>;
}
}
我的问题/任务是:
- 如果我导航到,我希望服务器从http://ip.jsontest.com
/ip
请求自己的 IP 地址,以某种方式将其传递给组件,然后将所有内容呈现为字符串,以供客户端查看为 HTML。Ip
- 我想我想避免在组件内部发出 HTTP 请求,而是想通过必要的信息传递
props
我知道诸如alt.js和其他同构通量实现之类的库通过商店的概念解决了这个问题,但我想知道这是否有点矫枉过正。
有没有一种简单的方法来添加所需的功能?