NodeJS React 18暂停回退不适用于数据获取?

ukxgm1gy  于 2023-02-15  发布在  Node.js
关注(0)|答案(1)|浏览(92)

我基本上是获取一堆用户数据并在页面加载时显示他们的用户名列表。我使用suspension的目的是在处理userList组件时显示“Loading...”文本,但由于某种原因,它没有显示回退中提到的加载文本。我使用的是最新的react 18版本。

import React, { useState, useEffect, Suspense } from "react";

function UsersList() {
  // Fetches and returns List of users
  const [users, setUsers] = useState([]);
  useEffect(() => {
    try {
      fetch("https://jsonplaceholder.typicode.com/users")
        .then((response) => response.json())
        .then((data) => setUsers(data));
    } catch (error) {
      // handle the error here
    }
  }, []);

  return (
    <div>
      <ul>
        {users.map((user) => (
          <li key={user.id}>{user.name}</li>
        ))}
      </ul>
    </div>
  );
}

function App() {
  return (
    <div className="App">
      <h2>Users List</h2>
      <Suspense fallback={<h1> Loading...</h1>}>
        <h4> Below are the user detailed fetched : </h4>
        <UsersList />
      </Suspense>
    </div>
  );
}

export default App;

我试过在chrome开发工具上使用节流来降低网络速度,但仍然不显示加载文本。

lmvvr0a8

lmvvr0a81#

Suspense怎么知道您正在获取数据呢?
docs
只有启用暂挂的数据源才会激活暂挂组件
其中包括:

  • 使用支持挂起的框架(如Relay和Next.js)获取数据
  • 使用延迟加载组件代码

Suspense不检测何时在Effect或事件处理程序中提取数据。

    • 尚不支持不使用意见化框架的启用挂起的数据提取。**实现启用挂起的数据源的要求不稳定且没有文档记录。用于将数据源与Suspense集成的官方API将在React的未来版本中发布。

Tl; DR:你还不能自己轻松地使用它。

相关问题