当前位置: 首页 > 知识库问答 >
问题:

BrowserRouter vs具有history.push()的路由器

顾骏祥
2023-03-14

我试图理解react-router-dom(v5)包的browserrouterrouter之间的区别,以及它对下面示例的区别。

文件中说:

来源:https://reacttraining.com/react-router/web/api/router

据我所知,我应该使用BrowserRouter为我的HTML5浏览器应用程序,我一直在这样做到目前为止。

history.push(...)示例:

import history as './history';

...

export function someAsyncAction(input) {
  return dispatch => {
    fetch(`${API_URL}/someUrl`, {
      method: 'POST',
      headers: {
        'Accept': 'application/json',
        'Content-Type': 'application/json'
      },
      body: JSON.stringify({ input }),
    }).then(() => {
      history.push('/myNewRoute');
    }).catch((err) => {
      dispatch(setError(err));
    })
  };
};
import { createBrowserHistory } from 'history';

export default createBrowserHistory();
import { BrowserRouter as Router } from 'react-router-dom';
import history as './history';

...

const App = () => (
  <Router history={history}>
     ...
  </Router>
);
// Does not work:
import { BrowserRouter as Router } from 'react-router-dom';

// Does work:
import { Router } from 'react-router-dom';

共有1个答案

苏振国
2023-03-14

BrowserRouter忽略history道具,因为它为您自动处理历史记录。如果您需要访问react组件之外的历史记录,那么使用router应该很好。

 类似资料:
  • 我正在尝试这样的东西 但是,当没有子路由的路由可以完美工作时,这段代码不起作用 我如何解决第一段代码?

  • 我有寻呼路线/电影吗?categoryId=21213在这个页面上,我有一部分演员,点击它应该重定向到/movies?categoryId=21213/演员?actorId=23434234 我应该如何正确地描述用一个actor来渲染我最新的组件?我试过了 但这不起作用

  • 我是React Router的新手,我正试图通过一条路径将一些道具从我的父组件传递给子组件。 这是我的代码: 理想情况下,我希望能够从子组件触发。在做了一些研究后,我认为传递一个选项而不是会传递它,但是它不会。知道如何将函数传递到路由组件中吗?

  • 我正在通过一些示例学习Akka HTTP堆栈来创建一个新的REST项目(完全非UI)。我一直在使用和扩展Akka HTTP微服务示例,以通过一系列用例和配置来工作,并对Scala和Akka HTTP的良好工作感到惊喜。 目前我有一个这样的配置: 参数只是一个简单的值,其中包含使用、等的典型数据。 有没有什么方法可以在多个Scala文件或某个示例中设置路由? 这可能是我想得太多了,因为我是如何在Ja

  • 关于这个问题,我做了很多研究,还没有找到正确或具体的答案,所以我在这里提出这个问题,然后就开始讨论Spring MVC项目。 我的应用程序是用Spring MVC(带Spring boot)构建的,后端是AngularJS 1。前端是x。我还激活了HTML5模式(所以,没有使用,只是简单的url,比如http://podcast.dk.lan/podcasts/123/items/456/play

  • 我试图使用react router将props从app.jsx传递到某个路由组件,但出现以下错误