2

问题:我正在学习本教程来了解 React.js。我已将 showdown.js 文件正确添加到项目中,并证明它已作为脚本文件加载到客户端浏览器中。当页面加载并且我查看控制台时,它会显示标题中列出的错误。

环境: MVC 4/5,Reactjs.NET

JSX 文件如下所示:

var Comment = React.createClass({
  render: function() {
    var converter = new Showdown.converter(); <-- Error is here
    return (
      <div className="comment">
        <h2 className="commentAuthor">
            {this.props.author}
        </h2>
          {converter.makeHtml(this.props.children.toString())}
      </div>
    );
  }
});
var CommentList = React.createClass({
    render: function () {
        return (
          <div className="commentList">
            <Comment author="Daniel Lo Nigro">Hello ReactJS.NET World!</Comment>
            <Comment author="Pete Hunt">This is one comment</Comment>
            <Comment author="Jordan Walke">This is *another* comment</Comment>

          </div>
      );
    }
});

var CommentForm = React.createClass({
    render: function () {
        return (
          <div className="commentForm">
              Hello, world! I am a CommentForm.
          </div>
      );
    }
});


var CommentBox = React.createClass({
    render: function () {
        return (
      <div className="commentBox">
        <h1>Comments</h1>
        <CommentList />
        <CommentForm />
      </div>
    );
    }
});
ReactDOM.render(
  <CommentBox />,
  document.getElementById('content')
);

证明 showdown.js 文件被发送到客户端 Chrome 浏览器:

摊牌加载

证明 JSX 文件中的语法正确

抛出异常的代码行是:

var converter = new Showdown.converter();

ShowDownConvertor

问题 如何获得 Showdown.convertor 的新实例?

4

1 回答 1

1

Jan上面的建议是正确的。这就是解决问题的方法:

<body>
  <div id="content"></div>
  <script src="https://fb.me/react-0.14.0.min.js"></script>
  <script src="https://fb.me/react-dom-0.14.0.min.js"></script>
  <script src="@Url.Content(" ~/Scripts/showdown.min.js ")"></script>
  <script src="@Url.Content(" ~/Scripts/Tutorial.jsx ")"></script>
</body>

注意 showdown.js 必须在 jsx 文件之前。

于 2015-12-25T22:01:25.023 回答