繁体   English   中英

React-Router v4.2.2无法正常工作(我认为我在Route标签中做错了什么?)

[英]React-Router v4.2.2 not working (I think I've done something wrong in the Route tag?)

我在我的项目中使用react-router v4.2.2,并试图创建一组卡,每个卡都链接到其他组件。 现在,我只是通过将每个Card路由到一个称为“ Project1”的特定组件来测试路由器是否正常工作。 但是,这是行不通的。 我没有看到Project1组件内的div弹出。 我究竟做错了什么?? 每个卡都不应链接到Project1组件吗?

这是保存卡的主容器的代码:

import React from 'react';
import { connect } from 'react-redux';
import { Link } from 'react-router-dom';
import ProjectCard from '../components/project_card.js';
import Project1 from '../components/project1.js';

class ProjectCards extends React.Component {
    render() {
        var projectCards = this.props.projects.map((project, i) => {
            return (
                <div key={i}>
                    <Link to={`/${project.title}`}>
                        <ProjectCard title={project.title} date={project.date} focus={project.focus}/>
                    </Link>
                </div>
            );
        });
        return (
            <div>{projectCards}</div>
        );
    }
}

function mapStateToProps(state) {
    return {
        projects: state.projects
    };
}

export default connect(mapStateToProps)(ProjectCards);

这是Routes容器的代码:

import React from 'react';
import Project1 from '../components/project1.js';
import { connect } from 'react-redux';
import { Route, Switch } from 'react-router-dom';

class Routes extends React.Component{
    render() {
        var createRoutes = this.props.projects.map((project, i) => {
            return <Route key={i} exact path={`/${project.title}`} component={Project1}/>
        });
        return (
            <Switch>
                {createRoutes}
            </Switch>
        );
    }
}

function mapStateToProps(state) {
    return {
        projects: state.projects
    };
}

export default connect(mapStateToProps)(Routes);

这是index.js的代码:

import React from 'react';
import ReactDOM from 'react-dom';
import { Provider } from 'react-redux';
import { applyMiddleware, createStore } from 'redux';
import ReduxPromise from 'redux-promise';
import { BrowserRouter } from 'react-router-dom';

import App from './components/App.jsx';
import css from '../style/style.css';
import style from '../style/style.css';
import reducers from './reducers';

const createStoreWithMiddleware = applyMiddleware(ReduxPromise)(createStore);

ReactDOM.render(
    <Provider store={createStoreWithMiddleware(reducers)}>
        <BrowserRouter>
            <App />
        </BrowserRouter>
    </Provider>
, document.getElementById('root'));

以及Project1的代码,该代码应在单击卡后显示:

import React from 'react';

const Project1 = () => {
    return (
        <div>hello there this is Project1</div>
    );
}

export default Project1;

当您单击一个链接时,您导航到Project1,它没有定义任何路由。 基本上,单击后就可以破坏路由,因为交换机与链接位于同一组件中。 Switch语句需要移动到第三个组件,以便单击链接卡后它仍然存在。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM