You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用React的useNavigate Hook时页面内容消失问题求助

React中使用useNavigate导致页面空白的解决方法

问题核心:useNavigate 是React Router的Hook,必须在被路由上下文(如BrowserRouter)包裹的组件内使用。你的代码未用路由容器包裹App组件,调用Hook时触发错误,导致页面无法渲染。

解决步骤

1. 确保已安装react-router-dom

若还未安装,执行以下命令:

npm install react-router-dom
# 或
yarn add react-router-dom

2. 用路由容器包裹根组件

修改项目入口文件(通常为index.js),用BrowserRouter包裹App组件:

import React from 'react';
import ReactDOM from 'react-dom/client';
import { BrowserRouter } from 'react-router-dom';
import App from './App';

const root = ReactDOM.createRoot(document.getElementById('root'));
root.render(
  <BrowserRouter>
    <App />
  </BrowserRouter>
);

3. 配置路由规则

在App组件中添加路由配置,将Contact组件映射到对应路径:

import React from "react";
import { useNavigate, Routes, Route } from "react-router-dom";
import Contact from "./Contact";

const App = () => {
  const navigate = useNavigate();

  const goToContact = () => {
    navigate('/contact'); // 路径建议用小写,避免大小写匹配问题
  };

  return (
    <div>
      {/* 路由出口:匹配到的组件会在这里渲染 */}
      <Routes>
        <Route path="/" element={
          <>
            <h1>Hello</h1>
            <button onClick={goToContact}>Contact</button>
          </>
        } />
        <Route path="/contact" element={<Contact />} />
      </Routes>
    </div>
  );
};
export default App;

关键说明

  • React Router的所有路由相关Hook(useNavigate、useParams等)都依赖路由上下文,只有在BrowserRouter(或HashRouter等)的子组件中才能正常工作。
  • 路由路径统一使用小写,可避免不必要的匹配异常。

内容的提问来源于stack exchange,提问作者Karthik KK

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 16:50:21