Я хочу получить список данных и отсортировать его при первой загрузке страницы, а затем я хочу иметь возможность сортировать по (fName) или (lName). Сортировка работает, когда я инициирую изменение состояния, но не при начальной загрузке, она отображается в том порядке, в котором мне ее дает база данных, я хочу инициировать сортировку сразу после загрузки данных.
Я пробовал все решения, которые я могу придумать, но безуспешно.
sortByfName() и sortBylName() передаются как обратные вызовы для запуска оттуда.
По какой-то причине сортировка работает в обратном порядке, поэтому я пропускаю противоположные значения, но это еще одна особенность, с которой я разберусь позже :-)
function App() {
const [contacts, setContacts] = useState([]);
const [sortBy, setSortBy] = useState('lName');
// GET DATA FROM SERVER
useEffect(() => {
axios
.get('http://localhost:5000/')
.then((result) => {
setContacts(result.data);
})
.catch((err) => console.log(err));
}, []);
// SORT CONTACTS
useEffect(() => {
const sorted = contacts.sort((a, b) => {
let nameA = a[sortBy].toUpperCase();
let nameB = b[sortBy].toUpperCase();
if (nameA < nameB) return -1;
if (nameA > nameB) return 1;
return 0;
});
setContacts(sorted);
}, [sortBy, contacts]);
const sortByfName = () => setSortBy('lName');
const sortBylName = () => setSortBy('fName');
... A few more functions and then render the JSX
lName
илиfName
- person Shubham Verma   schedule 31.08.2020.then
эту логику сортировки и установитеsetContacts
, затем - person Shubham Verma   schedule 31.08.2020