感谢您提前打开此页面。
我是一名自学成才的程序员。现在,我正在使用Bootstrap制作个人网页。
我现在想要做的是React.js的SPA功能。我所理解的这个功能是:
1. 安装“react-router-dom”; 2. 导入 { Link, NavLink } from "react-router-dom"; 3. 将那些锚点和href标签替换为Link to= 以下代码位于'src'文件夹中。
Navbar.js
我现在想要做的是React.js的SPA功能。我所理解的这个功能是:
1. 安装“react-router-dom”; 2. 导入 { Link, NavLink } from "react-router-dom"; 3. 将那些锚点和href标签替换为Link to= 以下代码位于'src'文件夹中。
Navbar.js
import React from "react";
import logoImage from "../components/logo.png";
// React fontawesome imports
import { FontAwesomeIcon } from "@fortawesome/react-fontawesome";
import { faBars } from "@fortawesome/free-solid-svg-icons";
import { Link, NavLink } from "react-router-dom";
const Navbar = () => {
return (
<nav className="navbar navbar-expand-lg navbar-light bg-white">
<div className="container-fluid">
<a className="navbar-brand mr-auto" href="#"><img className="logo" src={logoImage} alt="logoImage"/></a
<button
className="navbar-toggler"
type="button"
data-bs-toggle="collapse"
data-bs-target="#navbarSupportedContent"
aria-controls="navbarSupportedContent"
aria-expanded="false"
aria-label="Toggle navigation"
>
<FontAwesomeIcon icon={faBars} style={{ color: "#2ff1f2" }}/>
</button>
<div className="collapse navbar-collapse" id="navbarSupportedContent">
<ul className="navbar-nav ml-auto">
<li className="nav-item">
<a className="nav-link active" aria-current="page" href="../components/About">About me</a>
</li>
<li className="nav-item">
<a className="nav-link" href="#">Thoughts</a>
</li>
<li className="nav-item">
<a className="nav-link" href="#">Portfolio</a>
</li>
<li className="nav-item">
<a className="nav-link" href="#">Contacts</a>
</li>
</ul>
</div>
</div>
</nav>
)
}
export default Navbar;
App.js
import './App.css';
import "bootstrap/dist/css/bootstrap.min.css";
import Button from "react-bootstrap/Button";
import Particles from "react-particles-js";
import Navbar from "./components/Navbar";
import Header from "./components/Header";
import About from "./components/About";
function App() {
return (
<>
<Particles
className="particles-canvas"
params={{
particles: {
number: {
value: 30,
density: {
enable: true,
value_area: 900
}},
shape: {
type: "star",
stroke: {
width: 6,
color: "#f9ab00"
}}}}}
/>
<Navbar />
<Header />
<About />
</>
);
}
export default App;
Header.js
import React from "react";
import Typed from "react-typed";
import { Link } from "react-router-dom";
const Header = () => {
return (
<div className="header-wraper">
<div className="main-info">
<h1>Welcome, this is my own personal page</h1>
<Typed
className="typed-text"
strings={["text message to display in the centre of the page"]}
typeSpeed={80}
/>
<a href="#" className="btn-main-offer">Details</a>
</div>
</div>
)
}
export default Header;
一旦我替换掉
,这句话与IT技术有关。<a className="nav-link" href="#">Thoughts</a>
to
<Link to="../components/About">Thoughts</Link>
出现以下错误信息后,它就停止工作了。
×
Error: Invariant failed: You should not use <Link> outside a <Router>
invariant
C:/Users/Administrator/my-portfolio/node_modules/tiny-invariant/dist/tiny-invariant.esm.js:10
(anonymous function)
C:/Users/Administrator/modules/Link.js:88
85 | return (
86 | <RouterContext.Consumer>
87 | {context => {
> 88 | invariant(context, "You should not use <Link> outside a <Router>");
| ^ 89 |
90 | const { history } = context;
91 |
我对这个错误的理解是:
- 我应该在src文件夹中创建Router.js文件。
- 我应该先不使用Bootstrap开始工作。一旦SPA功能完成,然后我可以开始使用CSS in JS(例如:const something = div.styled ``;)来处理CSS特性。
我知道这听起来很荒谬,但这是我目前能想到的最好的选择。
问题是,我应该从哪里开始调查这个错误消息?
我目前正在依赖这个文档页面来消除错误消息。 第一个示例:基本路由 - https://reactrouter.com/web/guides/quick-start
我很感激你的意见。谢谢。 如果我找到解决方案,我会在这里更新我的答案。