[英]Render React JS server side using .net
我在http://reactjs.net/getting-started/tutorial.html上進行了注釋教程,並使用.net mvc將其渲染到服務器端。
我有一個現有的mvc應用程序,我在其中重寫了頁面以進行響應。 我正在嘗試使用.net渲染到服務器端,但是在嘗試渲染服務器端時出現錯誤。
Exception Details: React.Exceptions.ReactServerRenderingException: Error while rendering "TopicAnswers" to "react1": TypeError: undefined is not a function
at React.createClass.render (Script Document [8]:80:39) -> var answerNodes = this.props.data.map(function(answer){
at ReactCompositeComponentMixin._renderValidatedComponentWithoutOwnerOrContext (Script Document [2]:7395:34)
這是代碼:
在我的MVC視圖中:
@Html.React("TopicAnswers", new
{
initialAnswers = Model,
url = Url.Action("TopicAnswers", new { id = ViewBag.TopicID }),
})
我的TopicAnswers.jsx文件:
var TopicAnswers = React.createClass({
getInitialState: function(){
alert('inside getInitialState: ' + this.props.initialAnswers);
return {answers: this.props.initialAnswers};
}
我的ReactConfig.cs文件:
ReactSiteConfiguration.Configuration
.AddScript("~/Scripts/internal/eusVote/TopicAnswers.jsx");
問題:為什么在提供反應文件服務器端時出現問題?
我收到此錯誤消息,試圖使用.net渲染React jsx文件服務器端:
“ React.Exceptions.ReactServerRenderingException:將“ TopicAnswers”呈現為“ react1”時出錯:TypeError:未定義不是函數”
我的問題是在JSX文件中,我仍然有一個名為loadAnswersFromServer的ComponentWillMount。 如果要呈現客戶端,這就是您所需要的。 但是,一旦調整了代碼以呈現服務器端,就需要注釋掉/刪除ComponentWillMount,以便它不會嘗試在服務器端運行loadAnswersFromServer函數。
使用MVC,數據應從控制器傳遞到視圖,並在@ Html.Render(“ Comment”,new {initialData = Model})中進行引用以進行初始加載。
另外,不要忘記注釋掉/刪除JSX文件中的React.render(...)行。
alert
僅在瀏覽器窗口上下文中可用。 在服務器上渲染它時,您不能調用與瀏覽器相關的任何功能。 如果要呼叫它們,則需要對它們進行勻場處理,以使它們在服務器上不會出現故障。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.