javascript - 获取 TypeError : this. props 在 ReactJs 上未定义

标签 javascript reactjs

我正在尝试做教程:https://facebook.github.io/react/docs/tutorial.html

import React, { PropTypes } from 'react';
import classnames from 'classnames';
import styles from './CommentBox.css';
import withStyles from '../../decorators/withStyles';
import Link from '../../utils/Link';
import $ from 'jquery';

@withStyles(styles)
class CommentBox extends React.Component {

    constructor() {
        super();
        this.state = {data: []};
    }

    loadCommentsFromServer() {
        $.ajax({
            url: this.props.url,
            dataType: 'json',
            cache: false,
            success: function(data) {
                this.setState({data: data});
            }.bind(this),
            error: function(xhr, status, err) {
                console.error(this.props.url, status, err.toString());
            }.bind(this)
        })
    }

    componentDidMount() {
        this.loadCommentsFromServer();
        setInterval(this.loadCommentsFromServer, this.props.pollInterval);
    }

    render() {

        let url="/public/comments.json"

        return (
            <div className="commentBox">
                <h1>Comments</h1>
                <CommentList data={this.state.data} />
                <CommentForm />
            </div>
        );
    }

}

class CommentList extends React.Component {

    render() {

        let data = this.props.data

        var commentNodes = data.map(function (comment) {
          return (
            <Comment author={comment.author}>
              {comment.text}
            </Comment>
          );
        });

        return (
          <div className="commentList">
            {commentNodes}
          </div>
        );
    }
};

class Comment extends React.Component {
    render() {
        return(
            <div className="comment">
            <h2 className="commentAuthor">
              {this.props.author}
            </h2>
            {this.props.children}
          </div>
        );
    }
}

class CommentForm extends React.Component {
  render() {
    return (
      <div className="commentForm">
        Hello, world! I am a CommentForm.
      </div>
    );
  }
};

export default CommentBox;

但是,该教程有点过时,我正在使用带有 ES6 语法的 React 0.14-rc1。我已尽力遵循教程并以 0.14 的方式实现它。能够到达这一点,但现在收到错误:

TypeError: this.props is undefined

无法找出问题所在。知道为什么吗?谢谢

最佳答案

当使用React时和ES6 classes React 不会自动绑定(bind)在类中声明的函数。

因此,要么使用 this.loadCommentsFromServer.bind(this) 要么使用箭头函数

loadCommentsFromServer = () => {}

关于javascript - 获取 TypeError : this. props 在 ReactJs 上未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32732989/

相关文章:

javascript - Lightbox2 下一个箭头在组的第一个图像之后消失

用于检测用户何时保存网页的 Javascript?

javascript - 使用动态内容 react Swiper

javascript - 在回调中返回函数(事件,用户数据)?

javascript - 如何在 Ionic 本地存储中高效存储数据,而不需要每次都转换对象?

javascript - 在 Typescript 中,你如何区分 Node 和 vanilla Javascript 错误类型?

javascript - jQuery 通过 Ajax 在 ASP.NET MVC C# 中调用 Action 方法

javascript - 如何协调 Flux 和 React 之间的服务器错误消息?

reactjs - 如何在没有 useEffect 或 setState 函数的情况下重新触发钩子(Hook)?

reactjs - 在 Gatsby react 中使用状态 Hook