簡體   English   中英

使用.net渲染React JS服務器端

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM