React - 使用withRouter返回错误“无法读取未定义的属性'route'

时间:2017-08-16 03:41:19

标签: reactjs meteor react-router react-router-v4

我有一个基本的短信应用,我想在每次更改页面路径名时检查,并执行一项功能。到目前为止,我的组件工作正常,当我开始组织我的代码并开始使用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)会解决这个问题(我从一开始就怀疑)并且它仍然给了我同样的错误。

0 个答案:

没有答案