У меня есть приложение React, и я использую перехватчики React:
const [companies, setCompanies] = useState([]);
Я загружаю данные, и «компании» заполняются данными. У меня также есть другая кнопка для сортировки данных по NetIncome:
const sortByIncome = e => {
const el = document.getElementById("sort-selectbox");
const arr = companies.sort((a, b) => (a.NetIncome > b.NetIncome ? -1 : 1));
console.log(arr);
setCompanies(arr);
};
Проблема в том, что setCompanies не выполняет повторную визуализацию. В console.log я вижу, что массив отсортирован правильно, и даже если я console.log (компании), я вижу, что он также отсортирован. Но замечание происходит в интерфейсе. Также, если я наберу тот же код:
const sortByIncome = e => {
const el = document.getElementById("sort-selectbox");
const arr = companies.sort((a, b) => (a.NetIncome > b.NetIncome ? -1 : 1));
console.log(arr);
setCompanies([]);
};
, но передам пустой массив setCompanies, он сразу же работает и ничего не отображает (у меня есть функция рендера, которая получает компании в качестве параметра). Так почему же это не работает с передачей обр? Это потому, что я передаю тот же массив, но только что отсортированный?