Почему newList является пустым массивом в this.setState ({FilterStudents: newList}) ;? - PullRequest
0 голосов
/ 23 мая 2019

Я создаю простое приложение React.js и пытаюсь создать поле ввода, которое «фильтрует» результаты из массива данных, контролируя, что отображается на странице в режиме реального времени.

Шагкоторый фильтрует состояние отображения данных, сбой и вместо этого очищает состояние.

У меня есть все подтвержденные, насколько я могу сказать, что они работают правильно в другом месте компонента, за исключением части моего кода, которая обрабатывает это поведение,

Моя функция, которая должна фильтровать и обновлять состояние «FilterStudents» (которое связано с тем, что отображается на странице).

Когда эта функция вызывается страницей, однако, "newList "(переменная в строке 2) пуста, и пока страница не завершается с ошибкой, состояние" FilterStudents "теперь пусто.Я предполагаю, что это означает, что я выполнил шаги «.include» в строке 7 и 8 неправильно, но не смог исправить это.

listFilter = () => {
    let newList = [];
    let search = this.state.search;
    let list = this.state.filteredStudents;
    if (this.state.search !== "") {
       for (let i = 0; i > list.length; i++) {
            let checkFirst = list[i].firstName.includes(search);
            let checkLast = list[i].lastName.includes(search);
            if (checkFirst === true || checkLast === true) {
                newList.push(list[i]);
            }
        }
        this.setState({ filteredStudents: newList });
    } else {
        let resetStudents = this.state.students;
        this.setState({ filteredStudents: resetStudents });
    }
}

Я пытаюсь более или менее воспроизвести это поведение точно так же, какЯ нашел в этом примере:

https://codepen.io/pjmtokyo/pen/ZGVjVV

, но я не смог.Написанная функция просто очищает массив.Я предполагаю, что в моей реализации шагов «.include» в строке 7 и 8 произошла ошибка, но я не смог ее исправить.

1 Ответ

0 голосов
/ 23 мая 2019

Вы, вероятно, хотите инвертировать этот знак сравнения здесь:

for (let i = 0; i > list.length; i++) {

Похоже, так и должно быть:

for (let i = 0; i < list.length; i++) {

Вы практически ничего не повторяете.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...