私はリアクションウェブサイトのCommentBox
の例に基づいてRSS
リーダーを構築しています。アレイを状態に保存する?
googleフィードAPIの結果を状態保存するときに、変数がconsole.log
に読み込まれるjQuery ajax関数の外部に状態が正しく保存されていないため、結果の情報は正しくなりますが、空の配列を出力している関数の外部の状態を読み込みます。これは、コンポーネントが最初に呼び出されたときに開始されます。
var RSSApp = React.createClass({
getInitialState: function() {
return {feed:[]};
},
componentDidMount: function() {
this.loadRssFeed();
},
loadRssFeed: function() {
$.ajax({
url: 'https://ajax.googleapis.com/ajax/services/feed/load?v=1.0&num=-1&q=' + encodeURIComponent(this.props.url),
dataType: "jsonp",
jsonCallback: "reponseData",
success: function(feed) {
var feeds = feed.responseData.feed.entries;
console.log(feeds)
console.log(feed.responseData.feed)
this.setState({feeds:feed});
}.bind(this)
});
console.log(this.state)
},
render: function() {
return (
<div className="RSSBox">
<h1>RSS Feed built using ReactJS</h1>
<RSSForm />
<RSSList data={this.state.feed} />
</div>
)
}
});
私は状態を保存する際に間違っていますか?
'console.log'はあなたのためには機能しませんか? – stjepano
** ** jaxは**非同期**です。 – undefined
@stjepano最後のものは、状態に保存されるはずのRSSフィードエントリを印刷しませんか?しかし、Ajax呼び出しの2つの内部は、意図したとおりにフィードとフィードのエントリを返します。 – dmc91