React-Router PrivateRoute不起作用。我想念什么?

问题描述 投票:1回答:1

我的react-redux专用路由器无法正常工作。它只是向我显示我要访问的路线的空白页。而且我的状态未在Redux Dev Tools上加载。也可能是HashRouter的问题吗?我的PrivateRoute组件:

import React from "react";
import { connect } from "react-redux";
import {Router, Redirect, withRouter } from "react-router-dom";
import PropTypes from 'prop-types';
class PrivateRoute extends React.Component {
  static propTypes = {
    isAuthenticated: PropTypes.bool,
  }
  isLoggedin = () => {
    return this.props.isAuthenticated;
  };

  render = () => {
    let { component: Component, ...rest } = this.props;

    return (
      <Router
        {...rest}
        render={(props) =>
          this.isLoggedin() ? (
            <Component {...props} />
          ) : props.location.pathname === "/" ? null : (
            <Redirect to="/" />
          )
        }
        />
    );
  };
}

const mapStateToProps = (state) => ({
    auth: state.auth,
    isAuthenticated: state.auth.isAuthenticated
})

export default withRouter(connect(mapStateToProps, null)(PrivateRoute));

我在我的路线中将其设置为私有的应用程序:

import {Provider} from 'react-redux';
import store from './store'
import {loadUser} from './actions/authActions'
import PrivateRoute from './components/auth/PrivateRoute'


class App extends React.Component {
    componentDidMount(){
        store.dispatch(loadUser())
    }

    render(){
        return (
            <Provider store={store}>
                <HashRouter basename="/">
                    <Navbar />
                    <Route exact  path="/" component={Home}/>
                    <PrivateRoute path="/aeons" component={AeonsList} />
                    <PrivateRoute path="/carrefours" component={CarrefoursList} />
                    <PrivateRoute path="/farmers" component={FarmersList} />
                    <PrivateRoute path="/foodhalls" component={FoodhallsList} />
                    <PrivateRoute path="/grands" component={GrandsList} />
                    <PrivateRoute path="/heros" component={HerosList} />
                    <PrivateRoute path="/primos" component={PrimosList} />
                    <PrivateRoute path="/ranchos" component={RanchsList} />
                </HashRouter>
            </Provider>

        )
    }
}

export default App;
reactjs react-router private
1个回答
1
投票

在定义privateRoute组件时,您需要导入Route,而不是Router

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

检查this

© www.soinside.com 2019 - 2024. All rights reserved.