Я новичок в React Hooks. Я пишу небольшой код, который отображает пользователю список курсов. Он содержит 2 основных компонента CourseList
и Course
и настраиваемый хук useCourseList
. Вот код настраиваемого хука:
function useCourseList(searchString) {
const [courses, setCourses] = useState([]);
useEffect(() => {
function handleCourseListUpdating(nextCourses) {
setCourses(nextCourses);
}
getCourses(searchString, handleCourseListUpdating)
return () => {
setCourses([]);
}
}, [searchString]);
return courses;
}
Приведенный выше код извлекает данные API по строке поиска с помощью функции getCourses
. Затем он обновляет полученные данные до состояния courses
, которое отображается компонентом CourseList
. Функция useEffect
запускается с searchString
в качестве зависимостей, чтобы продолжать обновлять данные курсов после изменения строки поиска.
Веб-браузер обновляется много раз в соответствии с каждым изменением символа в строке поиска, хотя результаты данных по этим изменениям ключевых слов совпадают. Например, мы ищем игровой курс по ключевому слову «Игра». Затем он 4 раза вызывает useEffect один за другим с «G», «Ga», «Gam» и «Game». Эти ключевые слова дают те же результаты с моими текущими данными api, но они постоянно обновляются React DOM через веб-интерфейс. Это приводит к тому, что браузер мигает 4 раза , что не нужно. Это также создает неудобства для пользователя.
Есть ли какое-либо решение, чтобы предотвратить обновление пользовательского интерфейса, поскольку данные все еще согласованы? Есть ли проблемы с потоком данных?
Для демонстрации вы можете увидеть полный пример кода здесь: CodeSandbox