#javascript #reactjs
#javascript #reactjs
Вопрос:
Я пытаюсь реализовать функцию поиска, используя пользовательские перехваты и извлекая данные из внешнего API. Проблема в том, что когда пользователь вводит недопустимый поисковый запрос, он немедленно возвращает элемент JSX внутри условия if. Как я могу отложить показ элемента JSX с помощью setTimeout, поэтому сначала покажите пользователю счетчик или что-то в этом роде, а затем перенаправьте их на предыдущую страницу. Это то, что у меня есть:
if (!movies[0])
return (
<>
<Spinner />
<h1>NO RESULTS FOUND</h1>
</>
);
Это то, что я хотел бы сделать теоретически:
if (!movies[0]) => show Spinner (for 200ms) => setTimeout(show error and redirect after 200ms, 200)
как я мог бы реализовать это в react?
Ответ №1:
Возможно, вы можете попробовать что-то вроде этого :
const [loading, setLoading] = useState(true);
useEffect(() => {
let timer = setTimeout(() => {
setLoading(false);
}, 2000);
return () => { clearTimeout(timer) };
}, [];
return (
<>
{loading ? <div>Loading</div> : <div>...<div>}
</>
);
Комментарии:
1. На самом деле, мой загрузчик работает и реализован в моем пользовательском хуке, где я также получаю информацию о «фильме». Итак, я получаю счетчик при его загрузке, что мне нужно, так это когда результаты из массива movie возвращаются пустыми, мне нужно показать счетчик, прежде чем информировать пользователя о том, что результаты не были найдены, а затем, возможно, перенаправить их обратно на домашнюю страницу!