【发布时间】:2020-02-05 06:57:50
【问题描述】:
我正在尝试使我的应用程序更受路线驱动/控制。我正在使用React Router 和一个外部路由文件,以便从我的组件中抽象出路由逻辑。除 App 组件本身外,其他路由和组件均正常工作。我实际上是在尝试将所有其他路由包装在根路由('/')下,其组件是App.js。
下面是我的routes/index.js 文件。
import React from "react";
import PropTypes from "prop-types";
import { Router, Route, Redirect } from "react-router";
import App from "../App.js";
import Home from "../components/Home/Home";
import Games from "../components/Games/containers/Games";
import LoginSignUp from "../components/LoginSignUp/LoginSignUp";
import NotFound from "../components/NotFound/NotFound";
import Account from "../components/Account/Account";
import Trivia from "../components/Trivia/Trivia";
import store from '../config/store';
const getGame = (nextState, replace, callback) => {
var userGames = store.getState().auth.user.games;
if (userGames.includes(parseInt(nextState.match.params.id))){
return <Trivia/>
} else {
return <Redirect to="/404"/>
}
};
const Routes = ({ history, store }) => {
return (
<Router history={history} store={store}>
<Route path="/" component={App}>
<Route exact path="/404" component={NotFound} />
<Route exact path="/give/different/path" component={Home}/>
<Route exact path="/games" component={Games}/>
<Route path="/account" component={Account}/>
<Route path="/games/:id" render={getGame}/>
<Route path='/login' component={LoginSignUp}/>
</Route>
</Router>
);
};
Routes.propTypes = {
history: PropTypes.object.isRequired,
store: PropTypes.object.isRequired
};
export default Routes;
我也试过这个没有<Route exact path="/" component={Home}/> 的路由设置,我试过使用<Route exact path="/" component={App}> 无济于事。
下面是我的App.js 组件。
import React from 'react';
import Header from './components/Header/Header.js';
import './App.css';
import {createAction} from "redux-actions";
import {connect} from "react-redux";
class App extends React.Component {
state = {
loggedIn: true
}
render(){
debugger
return (
<div className="App">
<Header loggedIn={this.state.loggedIn} user={this.props.user}/>
</div>
);
}
}
const mapStateToProps = ({games, auth}) => {
return{
user: auth.user,
games: games.games
}
};
const mapDispatchToProps = dispatch => {
return {
getGame(obj) {
const actionCreator = createAction(
"games/getGame"
);
const action = actionCreator(obj);
dispatch(action);
}
}
};
export default connect(
mapStateToProps,
mapDispatchToProps
)(App);
这是我的相关依赖项及其版本。
"react-router": "^5.1.2",
"react-router-dom": "^5.1.0",
"react-router-redux": "^4.0.8",
【问题讨论】:
标签: reactjs react-redux react-router