我想从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
只是published
中每个元素的rss.items
属性的数组,则可以使用map
:
.then((rss) => {
this.setState({
description: rss.items,
isLoading: true,
dateStack: rss.items.map(item => item.published)
});
})
首先,映射是获取数据数组的一种好方法,但是有时很难理解而不是使用它,而使用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;
});
});