代码之家  ›  专栏  ›  技术社区  ›  IDskxo

提取数据本身需要几秒钟,但是,我如何使其在搜索时显示不出任何内容?

  •  0
  • IDskxo  · 技术社区  · 2 年前

    <Player/> ,它要么显示一个带有“未找到播放器”的页面,要么加载查询并保存的播放器的数据。

    player ,默认情况下为null。有一个 useEffect 这将以用户名作为参数获取数据库,如果找到用户,则会保存返回的JSON并将其设置为状态 setPlayer(res) . 如果从提取中找不到用户,则状态保持为 null

    当状态为 无效的 页面呈现“未找到用户”。当状态不为null(意味着它找到了一个玩家)时,我加载信息。

    player/existingPlayer ,页面快速呈现一秒钟 not found 然后正确更新和显示球员数据。

    这是唯一可行的方法吗?这是意料之中的吗?我知道数据获取本质上需要几秒钟,这取决于连接,但我觉得这与用户体验密切相关。

    有什么改进的建议吗?

    1 回复  |  直到 2 年前
        1
  •  1
  •   Secret Keeper    2 年前

    当玩家为空时,显示加载,在获取玩家信息(如果存在)后,如果未设置为空,则仅显示玩家信息 "" 如果你的状态等于 "" 显示未找到这样的玩家

    export default function App() {
    
      const [player, setPlayer] = useState(null)
    
      useEffect(() => {
        // fetch here and set player  to "" if not found
      }, [])
    
      if(player == null) return <div>Loading...</div>
    
    
      if(player == "") return <div>No Player Found.</div>
    
      return (
        <div className="App">
          Player info goes here...
        </div>
      );
    }