首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >React Router只有一个链接可以工作Github页面

React Router只有一个链接可以工作Github页面
EN

Stack Overflow用户
提问于 2021-03-04 00:34:01
回答 1查看 38关注 0票数 3

由于某些原因,我只有一个链接使用react路由器和github页面。主页和索引页加载正常,但是当在github页面上时,指向inspect页面和sandbox页面的链接返回404错误。它全部在本地工作,所以我不确定为什么索引在github页面上工作,而inspect和sandbox不工作(背景图像存储在/public中,在本地和github页面上都工作得很好)。所以http://user.github.io/my-app/可以工作,http://user.github.io/my-app/index可以工作,但http://user.github.io/my-app/inspecthttp://user.github.io/my-app/sandbox不行。无论我是否使用主页上的按钮或手动键入链接,结果都是一样的。我也试过从链接中删除{process.env.PUBLIC_URL+,但它链接到http://user.github.io/index或它说链接到的任何内容,所以这不起作用。我感到疲惫的另一件事是让所有的链接加载Index组件,看看是不是组件问题,但这并没有改变任何事情。提前感谢您的帮助!

这是我的App.tsx:

代码语言:javascript
复制
import React from 'react';
import { BrowserRouter as Router, Route, Switch } from "react-router-dom";
import './App.css';
import Home from './components/Home'
import Navbar from './components/Navbar'
import Inspect from './components/Inspect'
import Index from './components/Index'
import Sandbox from './components/Sandbox'

declare global {
    interface Window {
        $pop:any;
    }
}

function App() {
  return (
    <div className="App">
      <Router basename={process.env.PUBLIC_URL}>
        <Navbar />
        <Switch>
          <Route path="/" exact component={() => <Home />} />
          <Route path="/index" exact component={() => <Index />} />
          <Route path="/inspect" exact component={() => <Inspect />} />
          <Route path="/sandbox" exact component={() => <Sandbox />} />
        </Switch>
      </Router>
    </div>
  );
}

export default App;

和我的带有按钮的Home.tsx链接到其他页面:

代码语言:javascript
复制
import React, {Component} from 'react';
import './Home.css';

class Home extends Component {
    render() {
      return (
        <div className="Home" style={{ textAlign:"center" }}>
            <img src= {process.env.PUBLIC_URL + '/background.png'} alt="logo" />
            <br /><br /><br />
            <div id="custom">
                <form action={process.env.PUBLIC_URL+"/index"}>
                  <input type="submit" className="home-button" value="Index" />
              </form>
              <br />
              <form action={process.env.PUBLIC_URL+"/inspect"}>
                <input type="submit" className="home-button" value="Inspect" />
            </form>
            <br />
            <form action={process.env.PUBLIC_URL+"/sandbox"}>
                  <input type="submit" className="home-button" value="Sandbox" />
              </form>
            </div>
        </div>
      );
  }
}

export default Home;

Package.json中的主页:

代码语言:javascript
复制
"homepage": "http://user.github.io/my-app",
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-03-04 01:36:24

@Leandro评论起作用了!将表单更改为链接,并将process.env.PUBLIC_URL更改为(目前为硬编码,但将更改为常量全局变量) "/my-app"。下面是更新后的代码:

代码语言:javascript
复制
import React, {Component} from 'react';
import { Link } from "react-router-dom";
import './Home.css';

class Home extends Component {
    render() {
      return (
        <div className="Home" style={{ textAlign:"center" }}>
            <img src= {process.env.PUBLIC_URL + '/background.png'} alt="logo" />
            <br /><br /><br />
            <div id="custom">
                <Link to="/index">
                  <input type="submit" className="home-button" value="Index" />
              </Link>
              <br /><br />
              <Link to="/inspect">
                <input type="submit" className="home-button" value="Inspect" />
            </Link>
            <br /><br />
            <Link to="/sandbox">
                  <input type="submit" className="home-button" value="Sandbox" />
              </Link>
            </div>
        </div>
      );
  }
}

export default Home;
代码语言:javascript
复制
import React from 'react';
import { BrowserRouter as Router, Route, Switch } from "react-router-dom";
import './App.css';
import Home from './components/Home'
import Navbar from './components/Navbar'
import Inspect from './components/Inspect'
import Index from './components/Index'
import Sandbox from './components/Sandbox'

declare global {
    interface Window {
        $pop:any;
    }
}

function App() {
  return (
    <div className="App">
      <Router basename="/my-app">
        <Navbar />
        <Switch>
          <Route path="/" exact component={() => <Home />} />
          <Route path="/index" exact component={() => <Index />} />
          <Route path="/inspect" exact component={() => <Inspect />} />
          <Route path="/sandbox" exact component={() => <Sandbox />} />
        </Switch>
      </Router>
    </div>
  );
}

export default App;
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66461194

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档