reactjs - 从 react-router 导入 browserHistory

标签 reactjs react-native frontend

我正在尝试导入 browserHistory,但出现类似这样的错误。

 ./src/App.js
  Attempted import error: 'browserHistory' is not exported from 'react- 
  router'.

我的代码是:

import React, { Component } from "react";
import { browserHistory } from "react-router";

import App from "./App";
class Home extends Component {
 home = () => {
browserHistory.push("/home");
  };
    state = {};
  render() {
    return <button onClick={this.home} className="btn btn-outline-light">
            Logout
          </button>;
 }

最佳答案

据我了解,您的主要目的是以正确的方式更改浏览器 URL,而不是实际导入 browserHistory

对于 react-router v4:

你应该从 HOC withRouter 中受益。以下一种方式应用它,这会将一些额外的 Prop 传递到您的组件中,这些 Prop 将允许浏览浏览器历史记录

import { withRouter } from "react-router-dom";

class Home extends Component {
   home = () => { 
      // - you can now access this.props.history for navigation
      this.props.history.push("/home");
   };

   render() {
       return ( 
           <button onClick={this.home} className="btn btn-outline-light">
            Logout
          </button>;
       )
}

const HomeWitRouter = withRouter(Home);

对于 react-router v5 和 React Hooks,这可能看起来像:

import { useHistory } from "react-router-dom";

export const Home = () => {
  const history = useHistory();
  const goHome = () => { 
    history.push("/home");
  };

  return ( 
    <button onClick={goHome} className="btn btn-outline-light">
      Logout
    </button>;
  )
}

关于reactjs - 从 react-router 导入 browserHistory,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54327167/

相关文章:

javascript - React Router requireAuth 不重定向

javascript - 使用 extraData 时,React Native FlatList 会渲染数据两次

javascript - 在 Whack-a-mole 中第二次单击 "Game Over"后 "Start game"没有消失

javascript - React Hooks 的逻辑在哪里?

javascript - 下一个 js className 尚未设置

reactjs - Victory Native Pie 工具提示保持事件状态

reactjs - Font.loadAsync() 无法解析自定义字体的模块(React Native 和 Expo)

javascript - 如何确定我的 React Native 应用程序是从 JavaScript 代码构建的调试版本还是发布版本?

css - 防止 Bootstrap 按钮组中断

javascript - Require.js/Backbone.js : several views are using the same collection