Routing in Chrome Extension written in React

前端 未结 3 1640
悲&欢浪女
悲&欢浪女 2020-12-31 18:56

I want 2 pages in my Chrome extension. For example: first(default) page with list of users and second with actions for this user.

I want to display second page by cl

相关标签:
3条回答
  • 2020-12-31 18:56

    While you wouldn't want to use the browser (or hash) history for your extension, you could use a memory history. A memory history replicates the browser history, but maintains its own history stack.

    import { createMemoryHistory } from 'history'
    const history = createMemoryHistory()
    

    For an extension with only two pages, using React Router is overkill. It would be simpler to maintain a value in state describing which "page" to render and use a switch or if/else statements to only render the correct page component.

    render() {
      let page = null
      switch (this.state.page) {
      case 'home':
        page = <Home />
        break
      case 'user':
        page = <User />
        break
      }
      return page
    }
    
    0 讨论(0)
  • 2020-12-31 18:58

    I know this post is old. Nevertheless, I'll leave my answer here just in case somebody still looking for it and want a quick answer to fix their existing router.

    In my case, I get away with just switching from BrowserRouter to MemoryRouter. It works like charm without a need of additional memory package!

    import { MemoryRouter as Router } from 'react-router-dom';
    
    ReactDOM.render(
        <React.StrictMode>
            <Router>
                <OptionsComponent />
            </Router>
        </React.StrictMode>,
        document.querySelector('#root')
    );
    

    You can try other methods, that suits for you in the ReactRouter Documentation

    0 讨论(0)
  • 2020-12-31 19:22

    I solved this problem by using single routes instead of nested. The problem was in another place...

    Also, I created an issue: https://github.com/ReactTraining/react-router/issues/4309

    0 讨论(0)
提交回复
热议问题