Skip to content

18 - Conditional Loading Message

为了展示上一篇讲的的条件渲染,我们再用pending状态举个例子。

在调用接口,获取数据的过程中,网络不佳的时候,页面暂时没有内容,那就可以用pending的内容暂时替换。

先创建一个变量

jsx
const [isPending, setIsPending] = useState(true);

  useEffect(() => {
    fetch('http://localhost:8000/blogs').then((res) => {
      return res.json()
    }).then((res) => {
      setBlogs(res);
    }).catch(err => {
      console.log(err);
    }).finally(()=>{
    // 加载完毕后,关掉isPending的显示
      setIsPending(false);
    })
  },[])

// 模板
  return (  
    <div className="home">
      {isPending && <div>加载中。。。</div>}
      {blogs && <BlogList blogs={blogs} title="All Blogs" handleDelete={handleDelete} />}
    </div>
  );

当isPending为true,会显示加载中。当数据Fetch完毕,isPending设为false,则不显示。

如果觉得加载速度过快,效果不明显,可以按F12,打开开发者工具,选择newwork panel,点No throttile下拉框,切换为Fast 3G即可或更慢的网络,效果就出来了。

Released under the MIT License.