【发布时间】:2017-04-04 02:24:54
【问题描述】:
我有一个用 reactjs 和 redux 构建的简单应用程序。由于我刚开始学习 redux,我在进行服务器端渲染时遇到了一些问题。
到目前为止,我所拥有的是... 客户端 App.js 渲染 App 组件。
render(
<Provider store={store}>
<App />
</Provider>,
document.body
);
一个应用组件:
const App = () => (
<div>
<SearchContainer />
<TodoContainer />
</div>
)
其中两个项目都是容器 SearchContainer 正在从输入框获取输入,触发一个动作,该动作正在调度带有已加载待办事项的消息(来自远程休息服务)。
现在我喜欢在服务器端的页面加载时加载那些待办事项,并在页面显示后显示它们。我该怎么做?有没有办法在页面实际显示之前不使用服务器端渲染和加载项目?
到目前为止,我得到的是 routes.js 文件:
const middleware = [ thunk ]
if (process.env.NODE_ENV !== 'production') {
middleware.push(createLogger())
}
const store = createStore(reducer,applyMiddleware(...middleware))
app.get('/', function(req, res) {
res.render('home',{
markup: ReactDOMServer.renderToString(
<Provider store={store}>
<App />
</Provider>
)
});
//Some code calling remote service goes here
这通常是加载和应用程序,但是我如何将加载的数据推送到 TodoContainer 中?它应该是某种发送消息的方式,还是应该使用 todos 数组作为属性来初始化 App 组件?
【问题讨论】:
-
这个问题的答案对于 * 来说太大/太长了。网上有很多资源,包括官方文档。 redux.js.org/docs/recipes/ServerRendering.html。如果您开始实施解决方案并询问有关细节的问题,会更容易提供帮助。
标签: javascript node.js reactjs redux