reactjs - 如何使用 navlink react 路由器重定向到另一个页面
问题描述
我有一个实现反应路由器的反应应用程序。我在我的主组件内的导航栏组件内有我的导航链接。这是我的代码...
我的 index.tsx 文件
import App from './App';
ReactDOM.render(
<MemoryRouter>
<Route component={App}/>
</MemoryRouter>,
document.getElementById('root')
);
我的 App.tsx 文件;
import { CSSTransition, TransitionGroup } from 'react-transition-group';
import { Route, BrowserRouter as Router, Switch, useLocation } from "react-router-dom";
import './App.css';
import Home from './screens/Home/Home';
import Business from './screens/Business/BusinessHome';
import Category from './screens/Category';
import ProHome from './screens/Pro/ProHome';
import HireKreator from './screens/HireKreator';
import CategoryHome from './screens/CategoryHome';
import Articles from './screens/Articles';
import Login from './screens/Login';
function App() {
const location = useLocation();
return (
<div className="App">
<TransitionGroup>
<CSSTransition classNames="fade" timeout={300} key={location.key}>
<Router>
<Switch location={location}>
<Route exact path="/">
<Home />
</Route>
<Route path='/pro'>
<ProHome />
</Route>
....
</Switch>
</Router>
</CSSTransition>
</TransitionGroup>
</div>
);
}
export default App;
在我的 home.tsx 中,我有一个导航栏组件,导航链接所在的位置。
import Navbar from "../../components/Navbar";
export default function Home() {
return (
<div>
<Navbar />
</div>
);
}
然后是我的导航栏组件
import React, { useRef, useState } from "react";
import logo from "../../images/logo.png";
import './Navbar.css';
import * as HeroIcons from '@heroicons/react/outline';
import { NavLink } from "react-router-dom";
import { Transition } from "@tailwindui/react";
export default function Navbar() {
const boxRef = useRef(null);
// const boxOutsideClick = OutsideClick(boxRef);
const [open, setOpen] = useState(false);
const openNav = () => setOpen(!open);
return (
<div className="font-sans text-gray-500 font-semibold">
<div className="flex justify-between lg:justify-between p-6 md:bg-transparent z-0">
<div className="flex items-center">
<img src={logo} alt="logo" className="h-10" />
<ul className="hidden lg:flex">
<li className="mx-3 text-red-500 font-bold"><NavLink to="/pro">Kreative Pro</NavLink></li>
</ul>
</div>
</ul>
<ul className="flex">
<li className="mx-3"><NavLink to="/articles">Articles</NavLink></li>
</ul>
<button className="bg-red-500 w-32 py-2 rounded-full mx-4 text-white font-semibold">Login</button>
</nav>
<HeroIcons.MenuAlt3Icon onClick={openNav} className="h-10 lg:hidden" />
</div>
{open ? <div ref={boxRef} className="h-screen absolute inset-0 bg-black opacity-50 z-10"></div> : ''}
....
</div>
);
}
我是新来的,因为我已经使用 Angular 一段时间了。我究竟做错了什么?
解决方案
我认为您不必Route
在文件中添加标签index.tsx
。路由内部路由可能导致问题
您是否尝试过Route
仅在 App.tsx 文件中使用(而不是在 index.tsx 中)
只需替换您的index.tsx
文件
ReactDOM.render(
<MemoryRouter>
<Route component={App}/>
</MemoryRouter>,
document.getElementById('root')
);
和
ReactDOM.render(
<React.StrictMode>
<App />
</React.StrictMode>,
document.getElementById('root')
);
推荐阅读
- react-native - 基于游标的分页无限调用查询
- python - 如何修复 NameError:未定义名称“名称”
- python - VS 代码 // 它没有显示我终端上的所有数据行
- python - 如何拆分键以获得每个键具有相同字典值的单独键值对?
- spring - SpringBoot 新手。尝试连接到 postgeSQL 数据源(学生数据库)
- reactjs - NGINX 子目录后面的 ReactJS
- java - 未从可执行 jar 加载的外部 log4j 配置文件
- google-bigquery - 从 BigQuery 中的 json 字符串中提取信息
- f# - 寻找有关使用标记值的分类更改问题的反馈
- java - JButton 更改其他按钮颜色,不包括单击的按钮