我想在 React Native 中从 RSS 获取按发布日期排序的数据
I want to get the data sorted by publish date from RSS in react native
我想在 React Native 中从 RSS 获取按发布日期排序的数据
我使用了这个代码:
fetch('url here')
.then((response) => response.text())
.then((responseData) => rssParser.parse(responseData))
.then((rss) => {
this.setState({
description : rss.items,
isLoading : true
});
rss.items.map((value, index) => {
this.setState({
dateStack : this.state.description[index].published
});
});
});
这里dateStack是数据排序后的数组
但它没有得到排序的数据,只得到一个数据......
谁能帮我?
请告诉我该怎么做~
不仅第一个 setState
是异步的,而且不能立即用 this.state.description
引用,dateStack
只有一个数据点的原因是因为你在地图中的每次迭代。如果您希望 dateStack
只是 rss.items
中每个元素的 published
属性 的数组,您可以只使用 map
:
.then((rss) => {
this.setState({
description: rss.items,
isLoading: true,
dateStack: rss.items.map(item => item.published)
});
})
首先,map 是获取数据数组的好方法,但有时很难理解而不是使用它,请使用 for 循环 来映射数据。这是执行此操作的简单方法。
fetch('url here')
.then((response) => response.text())
.then((responseData) => rssParser.parse(responseData))
.then((rss) => {
var l_Data = [];
for (var index = 0; index < rss.length; index++)
{
l_Data[index] = rss[index];
}
this.setState({
description: l_Data,
isLoading: true
});
this.setState({
dateStack: l_Data;
});
});
我想在 React Native 中从 RSS 获取按发布日期排序的数据
我使用了这个代码:
fetch('url here')
.then((response) => response.text())
.then((responseData) => rssParser.parse(responseData))
.then((rss) => {
this.setState({
description : rss.items,
isLoading : true
});
rss.items.map((value, index) => {
this.setState({
dateStack : this.state.description[index].published
});
});
});
这里dateStack是数据排序后的数组 但它没有得到排序的数据,只得到一个数据...... 谁能帮我? 请告诉我该怎么做~
不仅第一个 setState
是异步的,而且不能立即用 this.state.description
引用,dateStack
只有一个数据点的原因是因为你在地图中的每次迭代。如果您希望 dateStack
只是 rss.items
中每个元素的 published
属性 的数组,您可以只使用 map
:
.then((rss) => {
this.setState({
description: rss.items,
isLoading: true,
dateStack: rss.items.map(item => item.published)
});
})
首先,map 是获取数据数组的好方法,但有时很难理解而不是使用它,请使用 for 循环 来映射数据。这是执行此操作的简单方法。
fetch('url here')
.then((response) => response.text())
.then((responseData) => rssParser.parse(responseData))
.then((rss) => {
var l_Data = [];
for (var index = 0; index < rss.length; index++)
{
l_Data[index] = rss[index];
}
this.setState({
description: l_Data,
isLoading: true
});
this.setState({
dateStack: l_Data;
});
});