gpt4 book ai didi

asp.net-core - ReactJS.net 无法调试

转载 作者:行者123 更新时间:2023-12-03 14:21:54 25 4
gpt4 key购买 nike

我使用 ReactJS.Net 和 ASP.NET 5 创建了一个小型应用程序。如果我使用 @Html.React 渲染组件服务器端并将其绑定(bind)到 MVC

@using System.Threading.Tasks
@using React.AspNet
@model Models.DashboardViewModel

@Html.React("MessageBoard", new
{
recentPosts = Model.RecentPosts
})

messageBoard.jsx

"use strict";

var MessageBoard = React.createClass({
render: function(){
return (<table className="table forum table-striped">
<thead>
<tr>
<th className="cell-stat"></th>
<th>Topic</th>
<th className="cell-stat text-center hidden-xs hidden-sm">Replies</th>
<th className="cell-stat-2x hidden-xs hidden-sm">Last Post</th>
</tr>
</thead>
<tbody>
{this.props.recentPosts.map(function(boardPost){
return <BoardPostRow post={boardPost}/>;
}, this)}
</tbody>
</table>)
}
});

这一切都很好。问题是,当我访问源代码时,没有 .js 文件,因此我无法进行调试。对于一些简单的只读元素来说这可能没问题。但现在我想渲染一些包含状态的交互式元素,这是一种用于在“消息板”中创建新帖子的表单。以下是同一个 *.cshtml 文件中的代码。

<div id="newPost"></div>

@section scripts
{
<script src="@Url.Content("~/scripts/Components/Board/boardPostForm.jsx")"></script>
<script src="@Url.Content("~/scripts/Components/Common/textInput.jsx")"></script>
<script>React.render(BoardPostForm({}), document.getElementById("newPost"))</script>
@Html.ReactInitJavaScript()
}

我在控制台中收到的错误是:

Uncaught SyntaxError: Unexpected token <
textInput.jsx:19 Uncaught SyntaxError: Unexpected token <
(index):69 Uncaught ReferenceError: BoardPostForm is not defined(anonymous function) @ (index):69
(index):70 [.NET] Warning: Each child in an array or iterator should have a unique "key" prop. Check the render method of MessageBoard. See http://fb.me/react-warning-keys for more information.
(index):71 [.NET] Warning: Unknown DOM property class. Did you mean className?
(index):71 Uncaught ReferenceError: MessageBoard is not defined

尝试读取 .jsx 时似乎出现错误,因为当我单击该错误时,它会将我带到渲染函数。我在这里缺少什么?也许我需要在构建过程中进行 jsx->js 转换(我正在使用 Gulp),而不是依赖 ReactJS.NET?

最佳答案

如果您在网络浏览器中点击 /scripts/Components/Board/boardPostForm.jsx 会发生什么?它应该显示已编译的 JSX 并在文件顶部有一些 ReactJS.NET 信息。如果没有,请确保在 Web.config 中配置 *.jsx 处理程序。它应该看起来像这样:

<add name="ReactJsx" verb="GET" path="*.jsx" type="React.Web.JsxHandlerFactory, React.Web" preCondition="integratedMode" />

What am I missing here? Maybe I need to do the jsx->js conversion as part of my build process (I am using Gulp) instead of relying on ReactJS.NET?

如果您愿意,可以使用 Gulp,由您决定。我这里有一个示例,它使用 Webpack 进行捆绑,并使用 ReactJS.NET 进行服务器端渲染:https://github.com/reactjs/React.NET/tree/master/src/React.Sample.Webpack

关于asp.net-core - ReactJS.net 无法调试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32556594/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com