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

react-router返回一页您如何配置历史记录?

祁俊喆
2023-03-14
var BackButton = React.createClass({

 mixins: [Router.Navigation],
  render: function() {
    return (
        <button
            className="button icon-left"
            onClick={this.navigateBack}>
            Back
        </button>
    );
  },

  navigateBack: function(){
    this.goBack();
  }
});
// Routing Components
Route = Router.Route;
RouteHandler = Router.RouteHandler;
DefaultRoute = Router.DefaultRoute;

var routes = (
 <Route name="app" path="/" handler={OurSchoolsApp}>
     <DefaultRoute name="home" handler={HomePage} />
     <Route name="add-school" handler={AddSchoolPage}  />
     <Route name="calendar" handler={CalendarPage}  />
     <Route name="calendar-detail" path="calendar-detail/:id" handler={CalendarDetailPage} />
     <Route name="info-detail" path="info-detail/:id" handler={InfoDetailPage} />
     <Route name="info" handler={InfoPage} />
     <Route name="news" handler={NewsListPage} />
     <Route name="news-detail" path="news-detail/:id" handler={NewsDetailPage} />
     <Route name="contacts" handler={ContactPage} />
     <Route name="contact-detail" handler={ContactDetailPage} />
     <Route name="settings" handler={SettingsPage} />
 </Route>
 );

 Router.run(routes, function(Handler){
   var mountNode = document.getElementById('app');
   React.render(<Handler /> , mountNode);
 });

共有1个答案

山翼
2023-03-14
class BackButton extends Component {
  static contextTypes = {
    router: () => true, // replace with PropTypes.object if you use them
  }

  render() {
    return (
      <button
        className="button icon-left"
        onClick={this.context.router.history.goBack}>
          Back
      </button>
    )
  }
}
var browserHistory = ReactRouter.browserHistory;

var BackButton = React.createClass({
  render: function() {
    return (
      <button
        className="button icon-left"
        onClick={browserHistory.goBack}>
        Back
      </button>
    );
  }
});

创建了一个fiddle,带有一个更复杂的示例,带有一个嵌入式iframe:https://jsfiddle.net/kwg1da3a/

您可以这样做:

var React = require("react");
var Router = require("react-router");

var SomePage = React.createClass({
  ...

  contextTypes: {
    router: React.PropTypes.func
  },
  ...

  handleClose: function () {
    if (Router.History.length > 1) {
      // this will take you back if there is history
      Router.History.back();
    } else {
      // this will take you to the parent route if there is no history,
      // but unfortunately also add it as a new route
      var currentRoutes = this.context.router.getCurrentRoutes();
      var routeName = currentRoutes[currentRoutes.length - 2].name;
      this.context.router.transitionTo(routeName);
    }
  },
  ...

你需要小心你有必要的历史回去。如果你直接点击页面,然后再点击,它会把你带回到应用程序之前的浏览器历史记录中。

 类似资料:
  • 问题内容: 谁能告诉我如何返回上一页而不是特定路线? 使用此代码时: 收到 此错误, 因为没有路由器历史记录 , 所以goBack()被忽略了 这是我的路线: 问题答案: 我想你只需要通过intializing它就像你的路由器上启用BrowserHistory: 。 在此之前,您应该需要从 希望对您有所帮助! UPDATE:ES6中的示例

  • 问题内容: 我从React-Router v3迁移到v4时遇到一些小问题。在v3中,我可以在任何地方执行此操作: 如何在v4中实现这一目标。 我知道当您在Component中时,可以使用hoc ,react上下文或事件路由器props。但对我而言并非如此。 我正在寻找v4中的NavigatingOutsideOfComponents的等效项 问题答案: 您只需要有一个导出对象的模块。然后,您将在整

  • 问题内容: 在当前版本的React Router(v3)中,我可以接受服务器响应并用于转到相应的响应页面。但是,这在v4中不可用,我不确定哪种适当的处理方式。 在此示例中,使用Redux,当用户提交表单时, components / app-product-form.js 调用。服务器返回成功后,该用户将被带到“购物车”页面。 如何从React Router v4的功能重定向到购物车页面? 问题答

  • 问题内容: 试图弄清楚如何返回上一页。我在用 这是我在第一个登录页面中配置的代码: 为了转发到后续页面,我只需执行以下操作: 但是,如何返回上一页?尝试了以下一些事情,但没有运气:1。 给出错误: TypeError:null不是对象(评估“ this.props”) 给出错误: TypeError:null不是对象(评估“ this.context”) 给出错误: TypeError:null不

  • 问题内容: 我一直在跟踪Tyler Mcginnis的教程,并用React Router遇到了麻烦,尤其是历史记录。我最终逐字复制了他的代码只是为了看看是否只有我一个人,但我仍然 实现是: 我注意到的是模块中不存在,而是模块内部。遵循找到的API文档,我认为必须通过以下位置调用它: 这样做会产生错误。删除括号,会导致与上述历史记录相同的错误。 当我记录历史记录时,绝对是不确定的,这使我相信问题与i

  • 问题内容: 使用Anaconda Python 2.7 Windows 10。 我正在使用Keras范例训练语言模型: 根据Keras文档,该方法返回一个History回调,该回调具有一个history属性,其中包含连续损失列表和其他度量。 训练模型后,如果我运行,则会出现错误: 使用上述代码训练模型后,如何返回模型历史记录? 更新 问题是: 首先必须定义以下内容: 回调选项必须被调用 但是现在如