Как использовать React Router на странице расширения Chrome - PullRequest
0 голосов
/ 06 января 2020

Я пишу расширение для браузера, в котором есть приложение для панели инструментов и приложение для веб-страницы. Панель инструментов - это бит, который выпадает из значка расширения в браузере, и когда вы нажимаете одну из опций, она вызывает window.open с URL-адресом, полученным из chrome.runtime.getURL

import React from 'react';
import PropTypes from 'prop-types';

const openPage = to => {
  const base = 'webpage/index.html';
  const url = to ? `${base}#${to}` : base;
  const extensionUrl = chrome.runtime.getURL(url);

  return () => {
    window.open(extensionUrl, '_blank');
  };
};

const Button = ({ type, label, to }) =>
  type === 'link' ? (
    <a href="#" onClick={openPage(to)}>
      {label}
    </a>
  ) : (
    <button onClick={openPage(to)}>{label}</button>
  );

на моей веб-странице. Приложение (полностью отдельное приложение для приложения панели инструментов) Я пытаюсь использовать React Router (react-router-dom версия 5.1.2) для управления маршрутизацией в различные разделы приложения.

import React from 'react';
import { MemoryRouter as Router, Switch, Route } from 'react-router-dom';

import AboutPage from './pages/AboutPage';
import HomePage from './pages/HomePage';

import './App.less';

const App = () => (
  <Router>
    <Switch>
      <Route path="#about">
        <AboutPage />
      </Route>
      <Route path="">
        <HomePage />
      </Route>
    </Switch>
  </Router>
);

У меня также есть пробовал HashRouter и BrowserRouter.

Увы, независимо от того, что я пробовал до сих пор, когда маршрут, к которому осуществляется переход, равен chrome-extension://blablahmyextensionsid/webpage/index.html#about, приложение веб-страницы всегда отображает компонент HomePage.

Что я делаю не так?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...