3 回答

TA貢獻(xiàn)1827條經(jīng)驗(yàn) 獲得超4個(gè)贊
我認(rèn)為最好的方法是根據(jù)需要對(duì)數(shù)據(jù)進(jìn)行排序,然后使用 FlatList 進(jìn)行渲染。
排序邏輯可能是您需要的方式,這意味著如果您愿意,您可以自由地“按‘任何’排序”。
根據(jù)您提供的數(shù)據(jù)集和信息,據(jù)我了解,業(yè)務(wù)規(guī)則是將帶標(biāo)志的項(xiàng)目顯示fisrt在第一位。所以,排序可能是這樣的:
export default function Home({navigation}) {
const [reviews, setReviews] = useState([
{ title: 'Alfa Romeo 147 1.9JTD', rating: 2020, body: 340000, sg: ['ABS ', 'CD ', 'ESP '], key: '1' },
{ title: 'Gotta Catch Them All (again)', body: 'lorem ipsum', key: '2' },
{ title: 'Not So "Final" Fantasy', body:'lorem ipsum', key: '3' },
{ title: 'Alfaromeo', rating: 3200, body: 'blablabla', first:'loremlo', key: '4' },
{ title: 'Gotta Catch Them All (again)', rating: 4, body: 'lorem ipsum', key: '5' },
{ title: 'Not So "Final" Fantasy', rating: 3, body: 'lorem ipsum', key: '6' },
{ title: 'Alfaromeo', rating: 3200, body: 'sadaa', key: '7' },
{ title: 'Gotta Catch Them All (again)', rating: 4, body: 'lorem ipsum', key: '8' },
]);
function renderItem(item) {
return (
<TouchableOpacity onPress={() => navigation.navigate('ReviewDetails', item)}>
<View style={styles.content}>
<Image
style={styles.image}
source={{
uri: 'https://www.autoplac-cg.me/storage/1871/conversions/5f9eb91821de1_20FB3486-4A0A-4B4A-B13C-CAE912950E22-thumb.jpg',
}}
/>
<Text style={styles.headertext}>{item.title}</Text>
<Text style={styles.infotext}>{item.rating}god. | {item.body}km <Text style={styles.collapse}>+</Text></Text>
</View>
</TouchableOpacity>
);
}
function sortData() {
let sortedArray = [];
// If the item contains "first" property, it will be placed at the beginning of the sortedArray, else it will be at the end of it
reviews.forEach(review => (
review.first
? sortedArray = [review, ...sortedArray]
: sortedArray.push(review)
));
return sortedArray;
}
return (
<View style={styles.container}>
<FlatList
data={sortData()}
renderItem={({ item }) => renderItem(item)}
/>
</View>
);
}
為了方便起見(jiàn),我移動(dòng)了將項(xiàng)目渲染到單獨(dú)函數(shù)的代碼

TA貢獻(xiàn)1852條經(jīng)驗(yàn) 獲得超7個(gè)贊
使用 array.sort 并提供比較功能
您可以使用
reviews.sort((a,?b)?=>?a.rating?-?b.rating)
這將對(duì)您的評(píng)論數(shù)組進(jìn)行排序。

TA貢獻(xiàn)1851條經(jīng)驗(yàn) 獲得超5個(gè)贊
你可以做的是
var reviews1 = reviews.filter(function (el) {
return el["first"];
});
var reviews2 = reviews.filter(function (el) {
return el["first"] === undefined;
});
const reviewsFinalArray = reviews1.concat(reviews2); // Your result
添加回答
舉報(bào)