反应路由器错误-TypeError:无法读取未定义的属性'func'

时间:2018-07-22 20:55:40

标签: reactjs runtime-error react-router-v4 react-router-dom react-proptypes

尝试了Internet上几乎所有可用的内容,但无法解决问题。当我安装react-router-dom并将RoutesBrowserRouter添加到项目中时,我遇到了以下问题:

Uncaught TypeError: Cannot read property 'func' of undefined

在捆绑的index.js中,有一行显示应用失败:

var func = _react.PropTypes.func,

找到一些解决方案,说明应使用react-router 3.2.0,但这不是重点。我想使用新的react-router-dom,当前安装的版本是:

    "react-router-dom": "^4.4.0-alpha.1",
  

注意::请不要提及PropTypes,我知道它们已经移到了单独的库中,并且我没有在项目中使用它们。


编辑:路由代码:

import React from 'react';
import {Route, Switch, BrowserRouter} from 'react-router-dom';
//import createHashHistory from 'history/createHashHistory';
import App from './App';
import Login from './components/Login/Login';
import PrivateRoute from './components/PrivateRoute/PrivateRoute';
import Unauthorized from './components/Unauthorized/Unauthorized';

//const history = createHashHistory();


const Routes = () => (
    <BrowserRouter>
        <Switch>
            <Route exact path="/login" component={Login}/>
            <Route exact path="/unauthorized" component={Unauthorized}/>
            <PrivateRoute exact path="/" component={App}/>
        </Switch>
    </BrowserRouter>
);

export default Routes;

PrivateRoute组件代码:

import React, {Component} from "react";
import {bindActionCreators} from "redux";
import {Redirect, Route} from "react-router-dom";
import {connect} from "react-redux";
import * as authActions from '../../redux/actions/authActions';


class PrivateRoute extends Component {
    render() {
        let {component: Component, loggedUser, ...rest} = this.props;

        return (
            <Route {...rest} render={(props) => (
                loggedUser ?
                    <Component {...props}/>
                    :
                    <Redirect
                        to={{
                            pathname: "/login",
                            state: {from: props.location}
                        }}
                    />
            )}/>
        );
    }
}

function mapStateToProps(state, props) {
    return {
        loggedUser: state.loggedUser
    }
}

function mapDispatchToProps(dispatch) {
    return {
        authActions: bindActionCreators(authActions, dispatch)
    }
}

export default connect(mapStateToProps, mapDispatchToProps)(PrivateRoute);

0 个答案:

没有答案