解决HTML按钮点击后仅展示React代码,无法显示登录页面的问题
问题解决步骤
核心问题原因
你直接链接到了React的源文件chat-app/src/App.js,浏览器会把这个文件当成纯文本渲染,而不是运行编译后的React应用。React项目需要先构建生成可在浏览器中运行的静态文件,才能正常访问。
步骤1:构建React项目
进入你的React项目根目录(即chat-app文件夹),执行构建命令:
npm run build
执行完成后,会在chat-app文件夹下生成一个build目录,里面包含编译好的HTML、CSS和JS文件,这是可以直接在浏览器中运行的静态应用。
步骤2:修改外部HTML的链接
打开你的外部HTML文件,做两处修改:
- 删除无效的脚本引入:删掉头部的
<script src="chat-app/src/App.js"></script>,因为React源文件无法直接在浏览器中执行。 - 修正Connexion按钮的链接:把按钮的
href改为构建后的入口页面:
<a href="chat-app/build/index.html" class="nav-connexion">Connexion</a>
步骤3:确认React路由配置正确性
确保你的React项目路由配置(通常在src/index.js或单独的路由文件)正确,未登录时会导向Login页面。示例配置如下:
import React from 'react'; import ReactDOM from 'react-dom/client'; import { BrowserRouter as Router, Routes, Route } from 'react-router-dom'; import App from './App'; import Login from './components/Login'; import Protected from './components/Protected'; import ChatRoom from './components/ChatRoom'; const root = ReactDOM.createRoot(document.getElementById('root')); root.render( <Router> <Routes> <Route path="/" element={<App />}> <!-- 受保护的路由,登录后才能访问ChatRoom --> <Route element={<Protected />}> <Route index element={<ChatRoom />} /> </Route> <!-- 登录路由 --> <Route path="/login" element={<Login />} /> <!-- 如果有注册页面,添加对应的路由 --> <Route path="/signup" element={<Signup />} /> </Route> </Routes> </Router> );
验证效果
完成以上步骤后,点击外部HTML的「Connexion」按钮,会跳转到构建后的React应用入口,此时因为用户未登录,App.js中的逻辑会通过<Outlet />渲染Login页面,符合你的需求。
内容的提问来源于stack exchange,提问作者ostoblaze
相关产品推荐
相关产品推荐

