ReactJS以适当的方式获取服务器数据

时间:2015-07-19 09:33:09

标签: reactjs rendering

所以我尝试在ES6标准版上构建一些React组件,但是我的代码在服务器数据提取中断了我不断获得Uncaught TypeError: Cannot read property 'map' of undefined

import React from 'react';

class PropertiesList extends React.Component {

  constructor(props){

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


  loadPropertiesFromServer() {
    $.ajax({
      url: this.props.url,
      dataType: 'json',
      success: (data) => {
        console.log(data);
        this.setState({data: data});
      },
      error: (xhr, status, err) => {
        console.error(this.props.url, status, err.toString());
      }
    });
  }

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

  render() {
    var propertyNodes = this.props.data.map((property) => {

    return (<Property>
                  {property.description}
            </Property>)
     });

    return <div className="row">
        <div className="col-lg-12">
          <h1>Available Properties</h1>
          {propertyNodes}
        </div>
    </div>;
  }
}

export default PropertiesList

入口点

import React from 'react';
import PropertiesList from './../components/propertylist.jsx';
import Filters from './../components/filter.jsx';
import Properties from './../models/PropertiesModel.js';
    class TransProperties extends React.Component {

      render() {

        return <div className="row">
            <div className="col-lg-9">
                <PropertiesList url="/properties.json"/>
            </div>
            <div className="col-lg-3">
                <Filters/>
            </div>
        </div>;
      }
    }

    export default TransProperties

1 个答案:

答案 0 :(得分:1)

render()方法中,您尝试访问this.props.data而不是this.state.data