2017-10-20 7 views
0

RSSフィードからデータを解析しようとしています。私が現時点で得ているエラーは 'TypeError:プロパティ' title 'of undefined'(render()メソッドを参照)を読むことができません。RSSフィードのオブジェクトをReactで解析すると、なぜコードが失敗しますか?

getNews()メソッドが正常に動作していて、アイテムメソッドの配列が 'news'(状態参照)に保存されているようですが、レンダリングメソッドで 'news'配列の長さが正しいことを確認しました。私は間違って何をしていますか?

>class App extends Component { 

constructor(props) { 
super(props); 

this.state = { 
    news: [] 
} 
this.getNews = this.getNews.bind(this); 
} 

componentDidMount() { 
this.getNews(); 
} 

getNews() { 

$.get("https://www.hs.fi/rss/tuoreimmat.xml", function (data) { 
    var $xml = $(data); 
    var items = []; 
    $xml.find("item").each(function() { 
    var $this = $(this), 
     item = { 
     title: $this.find("title").text(), 
     link: $this.find("link").text(), 
     description: $this.find("description").text(), 
     pubDate: $this.find("pubDate").text(), 
     } 
    items.push(item); 
    }.bind(this)); 
    this.setState({ news: items }) 
}.bind(this)); 
} 


render() { 
var newsItem = this.state.news[1]; 
var title = newsItem.title 

return (
    <div className="App"> 
    <header className="App-header"> 
     <h1 className="App-title">News</h1> 
    </header> 
    <div className="App-feeds"> 
    </div> 
    <div className="panel-list">{title}</div> 
    </div> 
);}} 
+1

ajaxは** asyncnronous **です。ピザを食べようとするのと同じ問題が発生する – charlietfl

答えて

0

状態が設定される前にタイトルを取得しようとしています。これを修正する簡単な方法は次のとおりです。

var title = newItem && newItem.title 
+0

エラーメッセージが修正されたようですが、まだタイトルが表示されていませんか? – jdet