Я показываю массив (CatFilterPro) в Flatlist, когда нажата кнопка, я хочу отсортировать ее по высокой цене до низкой, а когда нажата другая кнопка, сделайте обратное, приведенный ниже код работает нормально для первого нажатия, но он не мог снова отсортировать его после первой сортировки.
lowpricefilter() {
this.fc= this.state.recentPro2
this.fc.sort(function(a, b) {
return Number(a.pro_price) - Number(b.pro_price);
})
this.setState({
CatFilterPro: this.fc,
modalVisible: false
})
}
highpricefilter() {
this.fc= this.state.recentPro2
this.fc.sort(function(a, b) {
return Number(b.pro_price) - Number(a.pro_price);
})
this.setState({
CatFilterPro: this.fc,
modalVisible: false
})
}



Вы должны связать свои функции в своем конструкторе
this.highpricefilter = this.highpricefilter.bind(this);
this.lowpricefilter = this.lowpricefilter.bind(this);
sortByDescending = (a, b) => {
if (a === b) return 0;
if (a > b) return -1;
return 1;
};
sortByAscending = (a, b) => a - b;
sort = sortFunction => {
const { recentPro2: fc } = this.state;
return fc.sort(sortFunction);
}
lowpricefilter = () => {
const sortedAscending = this.sort(this.sortByAscending));
this.setState({
CatFilterPro: sortedAscending,
modalVisible: false
});
}
highpricefilter = () => {
const sortedDescending = this.sort(this.sortByDescending));
this.setState({
CatFilterPro: sortedDescending,
modalVisible: false
});
}
все же он не выполняет сортировку после того, как было выполнено возрастание или убывание, он просто сортирует для первого нажатия
Только что обновил свой ответ, случайно добавил 2 lowpricefilter. Я изменил это сейчас. Если проблема не исчезнет, дайте мне знать.
Я отредактировал и попробовал, я не думаю, что моя проблема в части сортировки, это в рендеринге, я консоль записываю массив, и он довольно отсортирован по asc и des, но он не отображает элементы, отсортированные в плоском списке только для первого вида, который он отображает.
Попробуйте добавить extraData = {this.state} в свой FlatList.
Я связал функции, их сортировка прекрасна, в первый раз я нажимаю кнопку, но когда я хочу снова выполнить сортировку, это не так.