初学react,router跳转失败的问题

发布于 2022-09-06 21:16:19 字数 1428 浏览 11 评论 0

代码如下:

import React, { Component } from 'react';
import ReactDOM from 'react-dom';
import './index.css';
import registerServiceWorker from './registerServiceWorker';
import './App.css';
import Header from './header';
import Main from './main';
import Footer from './footer';
import Login from './login/index'
import {
  HashRouter as Router,
  Route,
  hashHistory,
  Switch
} from 'react-router';

import { Provider} from 'react-redux'
import store from './store'

const Home = () => (
  <div>
    <h3>Home</h3>
  </div>
)
const Chat=()=>(
  <div className="App">
  <Header></Header>
  <Main></Main>
  <Footer></Footer>
  </div>
)
const LoginPage=()=>(<Login />)
class App extends Component{
  render(){
    **this.props.history.push('/chat')**
    console.log(hashHistory)
    return (
      <Router history={hashHistory}>
      <div style={{height:'100%'}}>
      <Switch>
        <Route exact path="/" component={LoginPage}/>
        <Route path="/chat" component={Chat}/>
        <Route path="/home" component={Home}/>
        <Route path="/login" component={Login}/>
      </Switch>
      </div>
    </Router>)
  }
}

想通过render中执行切换路由this.props.history.push('/chat')报错:
TypeError: Cannot read property 'push' of undefined,不知道怎么办了,求解答

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

横笛休吹塞上声 2022-09-13 21:16:19

你直接:

hashHistory.push('/chat')

就行了

出这个错的原因是,<Router> 组件的后代里头才有可能有 this.props.history
而你的 App 是在 <Router> 外面的所以没有 this.props.history,也就是 this.props.history 是 undefined,所以报错:

无法在 undefined 上找到 push 属性

希望对你有帮助

差↓一点笑了 2022-09-13 21:16:19

可以使用重定向过去

     <Redirect from="/" to="/chat" />

这个页面是路由初始入口,是不存在history方法的;
具体的你可以打印this.props看一下

离去的眼神 2022-09-13 21:16:19

我解决了顺便写了篇文章,方便遇到同样问题的兄弟们传送门

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文