【问题标题】:How to do server side rendering with Reacjs.Net with Redux together?如何使用 Reacjs.Net 和 Redux 一起进行服务器端渲染?
【发布时间】:2016-07-11 11:36:36
【问题描述】:

我正在尝试使用 ReactJS 和 Redux 使用 ASP.NET MVC 制作的应用程序进行服务器端渲染。我正在使用 ReacJS.Net。

我的组件可以很好地进行客户端渲染。

我的应用程序可能是这里的示例之一:http://redux.js.org/docs/basics/UsageWithReact.html。这里是主要代码(用于客户端渲染)。

import React from 'react'
import { render } from 'react-dom'
import { Provider } from 'react-redux'
import { createStore } from 'redux'
import todoApp from './reducers'
import App from './components/App'

let store = createStore(todoApp)

render(
  <Provider store={store}>
     <App />
  </Provider>,
 document.getElementById('root')
)

如何使用带有服务器端渲染的 ReacJS.NET 做到这一点?

【问题讨论】:

  • 你找到方法了吗?
  • @Rana 不,我没有找到任何解决方案
  • 首先我建议你查看来自 ReactJS.NET 的 documentation 关于 SSR。其次,对于 SSR,Redux 上的解决方案是在渲染应用程序 HTML 时,在服务器端的全局变量中注入初始状态。例如:&lt;script&gt;window.__MY_STATE__ = {...}&lt;/script&gt;。在客户端中,您可以从该变量中检索状态。它并不漂亮,但它很有效,而且是一种常见的技术。
  • 我很久以前确实检查过这个文档。但它并没有谈论 Redux,它不仅仅是像你说的那样传递一个变量(或者我错过了什么)。我的问题是初始化商店并使用提供者构建一个组件。我不知道如何用 ReactJS.NET 做到这一点。

标签: asp.net-mvc reactjs redux serverside-javascript reactjs.net


【解决方案1】:

我认为你应该从这里开始。我不确定 Redux,但这解释了很多:

https://reactjs.net/guides/server-side-rendering.html

还有一个非常好的服务器端反应渲染示例:

https://github.com/systempioneer/React-Umbraco-Example

它是使用 Umbraco 构建的,但 Umbraco 是基于 MVC 的 CMS,因此您几乎可以了解基本知识。

【讨论】:

  • Redux 真的很重要。没有它是没有用的。看起来 ReactJS.NET 的文档只提到传递传递道具但没有初始化 redux 存储。
  • @Luke - 你有没有以任何方式对此进行排序 =D
  • 遗憾的是没有。我最终将状态作为反序列化的字符串,然后在 redux 中获取。没有服务器端渲染,因为我不需要服务器端渲染。
最近更新 更多