当前位置: 首页 > 知识库问答 >
问题:

有什么方法可以将href标记转换为react.js上的链接吗?

商迪
2023-03-14

谢谢你提前打开这一页。我是一个自学成才的编码器。现在我正在用bootstrap制作我的个人页面。

我现在要做的是;react.js的SPA特性。我所理解的这个特征是;

  1. 安装“React-Router-DOM”,
  2. 从“React-Router-DOM”导入{Link,NavLink};
  3. 并替换这些锚和href标记以链接到=

下面的代码在'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;

应用程序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;

一旦我换下

<a className="nav-link" href="#">Thoughts</a> 

<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 | 

我对这个错误的理解是:

  1. 我应该在src文件夹中创建router.js文件。
  2. 我应该在没有引导的情况下重新开始。完成SPA特性后,我就可以在JS中作为CSS开始处理这个CSS特性(例如,const something=div.styled``;)

我知道这听起来很荒谬,但这是我现在能想到的最好的选择。

问题是,我应该从哪里开始调查这个错误消息?

我当前依赖此文档页删除错误消息。第一个示例:基本路由-https://reactrouter.com/web/guides/quick-start

我很感激你的意见。谢谢.如果我找到了一个解决方案,我会在这里更新它。

共有1个答案

孔甫
2023-03-14

RouterReact-Router-DOM提供的一个组件,正如错误所说,链接可以在Router内部使用。

此外,链接的路径应该是实际的浏览器url,而不是组件的路径。理想的方法是为每个组件添加路由。

比如你的App可以是这样的:(仅供参考)

function App() {
  return (
    <Router>
      <Switch>
        <Route path="/about">
          <About />
        </Route>
        <Route path="/">
          <Navbar />
        </Route>
      </Switch>
    </Router>
  );
}
 类似资料:
  • 可以使用系统默认zoneId将其转换为,但我没有找到将epoch second转换为的方法(请参见下面的),因为没有。我觉得很晦涩。 上面给出的源代码是Scala。

  • 问题内容: 说我有: 现在,我要将int值转换为String。哪种方法更有效? 我只是好奇是否有真正的区别,或者一个比另一个更好? 问题答案: 测试了10m分配的数字10 一个似乎赢了 编辑:JVM是Mac OS X 10.5下的标准’/ usr / bin / java’ 更多编辑: 要求的代码 情况2和3同样 使用

  • 问题内容: 我有一个问题,为什么将main方法标记为 public ? 根据关于stackoverflow的回答,它声明为 静态 “该方法是静态的,因为否则会产生歧义:应调用哪个构造函数?” 但是,任何人都可以解释为什么总是将其宣布为 公开 吗? 问题答案: 启动程序的初始化软件必须能够看到以便可以调用它。

  • 我正在寻找一种方法来替换快速中的字符。 我想用“+”替换“”,以得到“this+is+my+字符串”。 我怎样才能做到这一点?

  • 我刚反应过来。Im正在尝试将包含链接的数组转换成将在网站中按顺序显示链接的东西。 类似这样的事情: 在服务器中显示的内容如下所示: 我试着做我找到的下面的代码,但是它失败了:

  • 问题内容: 我正在尝试在Linux中使用Windows dll功能。我当前的解决方案是一个单独的wine应用程序的编译,该应用程序使用dll并通过IPC在dll和主应用程序之间传输请求/响应。 这是可行的,但是与简单的dll调用相比,这是一个实际的开销。 我看到用wine编译的程序通常是一个引导脚本和一些.so(根据 文件 实用程序)是普通的linux动态链接库。 有什么方法可以将.so直接链接到