Реагирует приложение на gh-страницах: не может ссылаться на локальные файлы - PullRequest
0 голосов
/ 17 сентября 2018

Если я создаю приложение реагирования, и в этом приложении есть ссылка на локальный html-файл, после того как это приложение опубликовано на gh-страницах, по некоторым причинам упомянутое упоминание никуда не ведет, оно просто перенаправляет пользователя нана той же странице, на которой он находился до перехода по ссылке.

Например:

Если я создаю простое приложение с CRA, например:

App.js

import React, { Component } from 'react';
import logo from './logo.svg';
import './App.css';

class App extends Component {
  render() {
    return (
      <div className="App">
        I'm the homepage
        <a id='testlink' href='html2.html'> Go to the second page </a>
      </div>
    );
  }
}

export default App;

И в общей папке я создаю новый HTML-файл "html2.html", который просто говорит:

I am the second app !

И это все, простое приложение, которое должно выпрыгнуть из индекса.html to html2.html при нажатии на ссылку.Хорошо, это приложение отлично работает при тестировании с npm start, оно прекрасно работает, если запущено через статический html-файл, поставляемый с npm run build, но при развертывании на gh-страницах, ссылка никуда не ведет.

Вот описанное выше приложение, развернутое на ghpages

Одним из способов решения этой проблемы является загрузка всех приложений отдельно на gh-страницах или использование реагирующего маршрутизатора.но я хотел знать, что я что-то упустил.Спасибо за вашу помощь.

1 Ответ

0 голосов
/ 17 сентября 2018

В Реагировать проектов, которые вы должны использовать реагировать-маршрутизатор для обработки routes и изменения страниц.

Простой пример:

import React from "react";
import { BrowserRouter as Router, Route, Link } from "react-router-dom";

const BasicExample = () => (
  <Router>
    <div>
      <ul>
        <li>
          <Link to="/">Home</Link>
        </li>
        <li>
          <Link to="/about">About</Link>
        </li>
        <li>
          <Link to="/topics">Topics</Link>
        </li>
      </ul>

      <hr />

      <Route exact path="/" component={Home} />
      <Route path="/about" component={About} />
      <Route path="/topics" component={Topics} />
    </div>
  </Router>
);

const Home = () => (
  <div>
    <h2>Home</h2>
  </div>
);

const About = () => (
  <div>
    <h2>About</h2>
  </div>
);

const Topics = ({ match }) => (
  <div>
    <h2>Topics</h2>
    <ul>
      <li>
        <Link to={`${match.url}/rendering`}>Rendering with React</Link>
      </li>
      <li>
        <Link to={`${match.url}/components`}>Components</Link>
      </li>
      <li>
        <Link to={`${match.url}/props-v-state`}>Props v. State</Link>
      </li>
    </ul>

    <Route path={`${match.url}/:topicId`} component={Topic} />
    <Route
      exact
      path={match.url}
      render={() => <h3>Please select a topic.</h3>}
    />
  </div>
);

const Topic = ({ match }) => (
  <div>
    <h3>{match.params.topicId}</h3>
  </div>
);

export default BasicExample;
...