1

I am creating a Chrome extension using React and React Router DOM. Whenever I integrate the React Router DOM code in index.js it fails to render anything. The problem does not seem to be with the Components as it works without the Router-DOM code.

index.js

import Routes from './Routes';

render((
    <Routes>
        <App />
    </Routes>
    ), document.getElementById('root'));

Routes.js

const Routes = () => (
  <BrowserRouter>
    <Switch>
        <Route exact path='/' component={App}/>
        <Route path='/home' component={Home}/>
    </Switch>
  </BrowserRouter>
)

export default Routes;

App.js

class App extends Component {

  render() {
    return (
        <div className="App">
          <header>
            <img src={logo} className="App-logo" alt="logo" />
            <p>TITLE</p>
          </header>
          <p className="App-center">SOME TEXT</p>
          <Link to='/home'>Log In</Link>
        </div>
    );
  }
}

export default App;

Home.js

class Home extends Component {
  render() {
    return (
      <div className="App">
        <header>
          <img src={logo} className="App-logo" alt="logo" />
          <p className="App-title">TITLE 2</p>
          <h2>SOME HEADING</h2>
        </header>

        <p className="App-center">SOME TEXT</p>
        <Link to='/'>Log Out</Link>        
      </div>
    );
  }
}

export default Home;
Sushant Kumar
  • 435
  • 7
  • 24

1 Answers1

2

Just to mention, it's better to create a history for your router.

As @wOxxOm mentioned, chrome extensions won't be served with a server to handle History Fallback, as a solution for that, always use createMemoryHistory instead of createBrowserHistory when you develop Chrome extensions.

If we translate what I explained above to the code, then it should be something like this:

import React from 'react';
import ReactDOM from 'react-dom';
import { Router } from 'react-router-dom';
import { createMemoryHistory /* , createBrowserHistory */ } from 'history';
import App from './src/App';

const history = createMemoryHistory(); // Instead of createBrowserHistory();

// Render the app with a router
ReactDOM.render(
    <Router history={history}>
        <App />
    </Router>,
    document.getElementById('app')
);
parse
  • 1,706
  • 17
  • 27