javascript - 如何使用 setTimeout 在 if 条件内返回 JSX 元素
问题描述
我正在尝试实现搜索功能,使用自定义挂钩,并从外部 API 检索数据。问题是当用户输入一个无效的搜索词时,它会立即返回 if 条件内的 JSX 元素。如何使用 setTimeout 延迟显示 JSX 元素,所以首先向用户显示微调器或其他东西,然后将它们重定向到上一页。这就是我所拥有的:
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)
我怎么能在反应中实现这个?
解决方案
你也许可以尝试这样的事情:
const [loading, setLoading] = useState(true);
useEffect(() => {
let timer = setTimeout(() => {
setLoading(false);
}, 2000);
return () => { clearTimeout(timer) };
}, [];
return (
<>
{loading ? <div>Loading</div> : <div>...<div>}
</>
);
推荐阅读
- javascript - 数据表自定义列过滤器在 codepen 示例中有效,但在 html 页面中无效
- netsuite - netsutie:如何在不丢失 netsuite 表单数据的情况下重新加载当前页面
- strapi - Strapi如何在后台启动?
- c++ - C++中向量的结构填充
- java - eachWithIndex 循环不稳定
- google-drive-api - 我可以将 Google Drives list() 请求限制为在我的域中拥有的文件吗?
- windows - 我如何知道桌面显示的时间?
- angular - 响应式表单未使用第三方地址查找进行更新
- python - JSONDecodeError:使用 googletrans 模块
- oledb - 运算符/操作数类型不匹配