return (
<div className='tabs'>
<TabsComponent defaultActiveKey='1'>
<TabPane tab='Самый дешёвый' key='1'>
<TicketsList
isLoading={loading}
tickets={sortByPrices(visibleData)}
/>
</TabPane>
<TabPane tab='Самый быстрый' key='2'>
<TicketsList
isLoading={loading}
tickets={sortByDuration(visibleData)}
/>
</TabPane>
</TabsComponent>
</div>
);
};
sortByPrices
и sortByDuration
? Дайте-ка попробую угадать - принимают в качестве параметра массив, и его же сортируют. Если так, то ответ на вопрос "куда копать" очевиден - копайте основы js, какие бывают типы данных, в чём их особенности. Массивы являются объектами, а объекты при присваивании / передаче в функцию / возврате из функции не копируются, копируются ссылки на них. То есть, несколько раз сортируется один и тот же массив - естественно, что при выводе всегда будет отображаться результат последней сортировки. Делайте копии массива, сортируйте копии, передавайте эти копии в экземпляры TicketsList
, типа tickets={sortByPrices([...visibleData])}
. const [items, setItems] = useState ([]); // вместо пустого массива массив с данными
function sortByPrices () {
setItems (items => {
// сортировка items по цене
items = items.sort ((a, b) => a > b ? 1 : -1);
return [...items];
});
}
function sortByDuration () {
setItems (items => {
// сортировка items
// ...
return [...items];
});
}
return (
<div className='tabs'>
<TabsComponent defaultActiveKey='1'>
<TabPane tab='Самый дешёвый' key='1'>
<TicketsList
isLoading={loading}
tickets={items}
/>
</TabPane>
<TabPane tab='Самый быстрый' key='2'>
<TicketsList
isLoading={loading}
tickets={items}
/>
</TabPane>
</TabsComponent>
</div>
);