如何在 React JS 中使用 RSS Feed 获取多个新闻数据
How to fetch Multiple news data using RSS Feed in React JS
我已经完成 RSS Feed
实施。现在我可以使用此代码获取 1 条新闻。我想使用这段代码获取多个新闻。我怎样才能做到这一点。
提前致谢。
class FetchDataFromRSSFeed extends Component {
constructor() {
super();
this.state = {
recentBlogPost: {
name: '',
url: ''
}
}
}
FetchDataFromRssFeed() {
var request = new XMLHttpRequest();
request.onreadystatechange = () => {
if (request.readyState == 4 && request.status == 200) {
var myObj = JSON.parse(request.responseText);
for (var i = 0; i < 1; i ++) {
this.setState({
recentBlogPost: {
name: myObj.items[i].title,
url: myObj.items[i].link
}
});
}
}
}
request.open("GET", "https://api.rss2json.com/v1/api.json?rss_url=https%3A%2F%2Fblog.codecarrot.net%2Ffeed.xml&order_dir=desc&count=30", true);
request.send();
}
componentDidMount() {
{this.FetchDataFromRssFeed()}
}
render() {
return (
<div>
Check out our blog: <a target="_blank" href={this.state.recentBlogPost.url}>{this.state.recentBlogPost.name}</a>
</div>
);
}
}
我已经实现了 RSS Feed。现在我可以使用此代码获取 1 条新闻。我想使用此代码获取多个新闻。
而不是像这样定义对象,
recentBlogPost: {
name: '',
url: ''
}
你需要定义一个array
,
recentBlogPost: []
现在不再只设置第一条记录,
var myObj = JSON.parse(request.responseText);
for (var i = 0; i < 1; i ++) {
this.setState({
recentBlogPost: {
name: myObj.items[i].title,
url: myObj.items[i].link
}
});
}
您需要设置完整的数组,
var myObj = JSON.parse(request.responseText);
this.setState({
recentBlogPost: myObj.item
});
最后只显示 1 条记录,
<div>
Check out our blog: <a target="_blank" href={this.state.recentBlogPost.url}>{this.state.recentBlogPost.name}</a>
</div>
您需要遍历状态数组,
{this.state.recentBlogPost.map(post=>{
return <div key={post.title}>Check out our blog: <a target="_blank" href={post.link}>{post.title}</a></div>
})}
除了@ravibagul91 的出色解释外,这是完整的 React 组件。有关策略的详细信息,请参阅:
import React, { Component } from "react";
export default class FetchDataFromRSSFeed extends Component {
constructor() {
super();
this.state = {
items: []
};
}
async componentDidMount() {
try {
const response = await fetch(
"https://api.rss2json.com/v1/api.json?rss_url=https%3A%2F%2Fblog.codecarrot.net%2Ffeed.xml&order_dir=desc"
);
const json = await response.json();
this.setState({ items: json.items });
} catch (error) {
console.log(error);
}
}
render() {
console.log(this.state);
return (
<div>
Check out our blog:
{this.state.items.map(item => (
<li key={item.guid}>
<a target="_blank" rel="noopener noreferrer" href={item.link}>
{item.title}
</a>
</li>
))}
</div>
);
}
}
未设置样式的结果如下所示:
我已经完成 RSS Feed
实施。现在我可以使用此代码获取 1 条新闻。我想使用这段代码获取多个新闻。我怎样才能做到这一点。
提前致谢。
class FetchDataFromRSSFeed extends Component {
constructor() {
super();
this.state = {
recentBlogPost: {
name: '',
url: ''
}
}
}
FetchDataFromRssFeed() {
var request = new XMLHttpRequest();
request.onreadystatechange = () => {
if (request.readyState == 4 && request.status == 200) {
var myObj = JSON.parse(request.responseText);
for (var i = 0; i < 1; i ++) {
this.setState({
recentBlogPost: {
name: myObj.items[i].title,
url: myObj.items[i].link
}
});
}
}
}
request.open("GET", "https://api.rss2json.com/v1/api.json?rss_url=https%3A%2F%2Fblog.codecarrot.net%2Ffeed.xml&order_dir=desc&count=30", true);
request.send();
}
componentDidMount() {
{this.FetchDataFromRssFeed()}
}
render() {
return (
<div>
Check out our blog: <a target="_blank" href={this.state.recentBlogPost.url}>{this.state.recentBlogPost.name}</a>
</div>
);
}
}
我已经实现了 RSS Feed。现在我可以使用此代码获取 1 条新闻。我想使用此代码获取多个新闻。
而不是像这样定义对象,
recentBlogPost: {
name: '',
url: ''
}
你需要定义一个array
,
recentBlogPost: []
现在不再只设置第一条记录,
var myObj = JSON.parse(request.responseText);
for (var i = 0; i < 1; i ++) {
this.setState({
recentBlogPost: {
name: myObj.items[i].title,
url: myObj.items[i].link
}
});
}
您需要设置完整的数组,
var myObj = JSON.parse(request.responseText);
this.setState({
recentBlogPost: myObj.item
});
最后只显示 1 条记录,
<div>
Check out our blog: <a target="_blank" href={this.state.recentBlogPost.url}>{this.state.recentBlogPost.name}</a>
</div>
您需要遍历状态数组,
{this.state.recentBlogPost.map(post=>{
return <div key={post.title}>Check out our blog: <a target="_blank" href={post.link}>{post.title}</a></div>
})}
除了@ravibagul91 的出色解释外,这是完整的 React 组件。有关策略的详细信息,请参阅:
import React, { Component } from "react";
export default class FetchDataFromRSSFeed extends Component {
constructor() {
super();
this.state = {
items: []
};
}
async componentDidMount() {
try {
const response = await fetch(
"https://api.rss2json.com/v1/api.json?rss_url=https%3A%2F%2Fblog.codecarrot.net%2Ffeed.xml&order_dir=desc"
);
const json = await response.json();
this.setState({ items: json.items });
} catch (error) {
console.log(error);
}
}
render() {
console.log(this.state);
return (
<div>
Check out our blog:
{this.state.items.map(item => (
<li key={item.guid}>
<a target="_blank" rel="noopener noreferrer" href={item.link}>
{item.title}
</a>
</li>
))}
</div>
);
}
}
未设置样式的结果如下所示: