Я несколько озадачен тем, как определенный массив сортируется функцией редукса.У меня есть список сотрудников, которые мне нужно отсортировать по имени.
Например, у меня есть состояние редуктора по умолчанию:
сотрудников = [Нейт, Джон, Майкл]
На экране, где отображается этот объект, я делаю console.log, когда компонент смонтирован, и получаю:
[Нейт, Джон, Майкл]
Так вот, это становится странным.У меня есть функция onPress, которая переупорядочивает список в алфавитном порядке.Я также консоль регистрации значения списка на экране (до запуска действия), в действии (где происходит сортировка) и в редукторе.Console.log ДО запуска действий возвращает отсортированный список.
reorderList() {
if(this.props.employees){
console.log("SCREEN", this.props.employees);
this.props.reorderList(this.props.employees);
}
}
Возвращает:
ЭКРАН: [Джон, Майкл, Нейт]
Это как если бы действие происходило до console.log, но я не понимаю, как это было бы возможно, если бы я не понимал синхронность функций RN.
Вот функция внутри действия, котораясортирует список.Я поместил ту же функцию внутри редуктора, и журналы действий / экрана по-прежнему возвращают преждевременно отсортированный массив.
export const reorderList = (employees) => {
console.log("ACTION", employees); // returns "ACTION: [John, Michael, Nate]"
var items = employees;
employees.sort(function(a, b){
var nameA = a.name.toUpperCase();
var nameB = b.name.toUpperCase();
if (nameA < nameB) {
return -1;
}
if (nameA > nameB) {
return 1;
}
return 0;
});
return {
type: "reorder_list",
payload: items
}
}
Кажется, будто я что-то неправильно понимаю в Redux?