我有一个基本的短信应用,我想在每次更改页面路径名时检查,并执行一项功能。到目前为止,我的组件工作正常,当我开始组织我的代码并开始使用withRouter时,我得到了一个错误:
Uncaught TypeError: Cannot read property 'route' of undefined
如果我删除withRouter,它可以正常运行isUserAuthenticated函数。我该怎么做才能更改我的代码,以便它与withRouter一起工作,同时提供与它相同的功能。现在它返回的错误只是一个空白的白页,没有任何组件呈现在屏幕上
routes.js
import { BrowserRouter, Route, Switch, withRouter} from 'react-router-dom'
import React from "react";
import { Meteor } from "meteor/meteor";
import App from "./../ui/App";
import NotFound from "./../ui/NotFound";
import Signup from "./../ui/Signup";
import Login from "./../ui/Login";
class Routes extends React.Component{
constructor(props){
super(props)
}
isUserAuthenticated(){
let isAuthenticated = !!Meteor.userId();
console.log(this.props.history)
if(isAuthenticated){
}
}
render(){
return(
<BrowserRouter>
<Switch>
<App path="/chat" texts={this.props.texts} render={this.isUserAuthenticated()}/>
<Signup path="/signup" render={this.isUserAuthenticated()}/>
<Login path="/" render={this.isUserAuthenticated()}/>
<Route path="*" component={NotFound}/>
</Switch>
</BrowserRouter>
)
}
}
export default withRouter(Routes)
我在某处读过在构造函数中使用super(props)会解决这个问题(我从一开始就怀疑)并且它仍然给了我同样的错误。