无法从对象

时间:2016-10-24 17:54:15

标签: javascript object

我知道那是多么愚蠢,但我不明白这个简单的事情。 我有对象,我需要从对象名称获取。但是,不要了解如何获得内在价值。 My object

我试试:

data['name']
data[0]
data[0].name

每次我收到此错误:

  

TypeError:无法读取属性

非常感谢。

Upd1:

然后我尝试:

  

data.constructor

我明白了:

Cannot read property 'constructor' of null

我从ajax获取数据,来自question 当我尝试:

  

JSON.parse(数据)

我明白了:

  

SyntaxError:位于1(...)的JSON中的意外标记o

当我从服务器获取此数据时的原始数据:

  

{"流派":[{" ID":28,"名称":"动作"},{" ID":12,"名称":"冒险"},{" ID":16,"名称":&#34 ;动画"},{" ID":35,"名称":"喜剧"},{" ID":80, "名称":"犯罪"},{" ID" 99"名称":"纪录片"}, {" ID":18,"名称":"剧情"},{" ID":10751"名称&#34 ;:"家庭"},{" ID":14,"名称":"幻想"},{" ID&# 34; 36"名称":"历史"},{" ID":27,"名称":"恐怖与#34;},{" ID":10402"名称":"音乐"},{" ID":9648,&# 34;名称":"推理"},{" ID":10749"名称":"约会"},{& #34; ID":878,"名称":"科学   小说"},{" ID":10770"名称":"电视   电影"},{" ID":53,"名称":"惊悚"},{" ID":10752,& #34;名称":"战争"},{" ID":37,"名称":"西"}]}

2 个答案:

答案 0 :(得分:1)

在审核了您的其他问题后,这是我假设的代码。

const Main = React.createClass({
    getInitialState : function() {
    return {
      data: null
    };
 },

 componentDidMount: function() {
     var self = this;
     axios.get('https://api')
         .then(function (response) {
            self.setState({data: response.data})
            console.log(response.data);
         })
         .catch(function (error) {
             console.log(error);
         });
        console.log('mount ' + this.state.data );
},
    render() {
        return (
            <h1>{JSON.stringify(this.state.data)}</h1>
        )
    }
})
export default Main;

当您在等待服务器返回时,Main.data等于null。这就是为什么你得到null类型的原因,如果你像数组一样访问数据,你会收到类型错误。在等待填充数据时,可以将Main.data默认为空数组。

const Main = React.createClass({
    getInitialState : function() {
    return {
      data: []
    };
 },

在使用React时,您还需要在数据更改后更新组件。我建议为此查看this问题。

答案 1 :(得分:0)

我不知道,为什么之前没有用,但现在我得到了我需要的一切。谢谢大家。

import React from 'react';
    import { render } from 'react-dom';
    import 'whatwg-fetch';

    const Genres = React.createClass({
        getInitialState : function() {
                return {
                    data: []
            };
        },
        componentDidMount: function() {
            fetch('https://api.themoviedb.org/3/genre/movie/list?api_key=')
                 .then(function(response) {
                     return response.json()
                 }).then(function(json) {
                     this.setState({data: json.genres})
                        //console.log('parsed json', json.genres)
                 }.bind(this)).catch(function(ex) {
                     console.log('parsing failed', ex)
                 })
         },

        render() {
            var data = this.state.data.map(function(key){
                                    return <li>{ key.name }</li>
                })
            console.log(data)
            return (
                <div>
                    Genres:{data}
                </div>
            )
        }
     })

    export default Genres;