请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

Uncaught TypeError: Cannot read property 'length' of undefined

老师您好!我的代码是这样的: 

constructor() {

        super();

        this.state = {

            projectNumber: ''

        };

    }

    componentWillMount() {

        var myFetchOptions = {

            method: 'GET'

        };

        fetch("。。。。。",myFetchOptions)

        .then(response => response.json())

        .then(json => this.setState({projectNumber: json}));

    };

    render(){

        console.log(this.state);

        console.log(this.state.projectNumber.dataList.length)


然后我从后台获取到的json格式格式是这样的;

{

    "errcode": 0,

    "dataList": [

        {

            "id": 1,

            "pro_num": "0-不涉及"

        },

        {

            "id": 2,

            "pro_num": "1008"

        },

        {

            "id": 3,

            "pro_num": "1019"

        },

        {

            "id": 4,

            "pro_num": "1079"

        },

        {

            "id": 5,

            "pro_num":

但是想要获取dataList的length会报错???

正在回答 回答被采纳积分+3

3回答

鸿鹄yyn 2018-03-12 22:08:31

  constructor(){
    super();
    this.state={
      new:'',
    };
  }
  componentWillMount(){
    console.log("1111");
    var opts = {
        method:"GET"
    }
    fetch("http://newsapi.gugujiankong.com/Handler.ashx?action=getnews&type=top&count=10",opts)
    .then((response) => response.json()) //把response转为json
    .then((responseData) => { // 上面的转好的json
        this.setState({new:responseData})
        //alert(responseData);
        console.log(responseData);
      })
      .catch((error)=> {
          message.success('错误了');
        })
        console.log("1111");
  }
  render(){

    /*  
      '没有加载到任何新闻';*/
  var count =this.state.new.length;
//  var count=news.length;
  console.log(count);
  const newsList =count
    ? this.state.new.map((newsItem, index) => (
      <li key={index}>
        <Link to={`details/${newsItem.uniquekey}`} target="_blank">
          {newsItem.title}
        </Link>
      </li>
    ))
    : '没有加载到任何新闻';

    return(
      <div class="topNewsList">
      <Card>
        <ul>
          {newsList}
        </ul>
      </Card>
      </div>
    )
  }

这是我的解决办法 。你参考一下。。。。。。。。。。

0 回复 有任何疑惑可以回复我~
Parry 2017-11-21 15:03:10

被你搞蒙了,那个属性没有length属性啊,要取长度需要自己计算的。

0 回复 有任何疑惑可以回复我~
Parry 2017-11-21 09:46:12

错误是?是不是前面的对象是空?

0 回复 有任何疑惑可以回复我~
  • 提问者 慕的地3571103 #1
    打印出this.state.projectNumber.dataList是有内容的,但是想获得dataList这个数组的长度就会报错:Cannot read property 'length' of undefined
    回复 有任何疑惑可以回复我~ 2017-11-21 11:33:41
  • 鸿鹄yyn 回复 提问者 慕的地3571103 #2
    我也是请问解决了吗
    回复 有任何疑惑可以回复我~ 2018-03-12 20:19:41
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信