react.js - [react-router] Location "/hopper" did not match any routes

查看:181
本文介绍了react.js - [react-router] Location "/hopper" did not match any routes的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

router.js如下

import React, { PropTypes } from 'react';
import { Router, Route, IndexRoute } from 'dva/router';
import MainLayout from './routes/MainLayout';
import Dashboard from './routes/Dashboard';
import Hopper from './routes/Hopper';

export default function({ history }) {
  return (
    <Router history={history}>
        <Route path="/" component={MainLayout} >
            <IndexRoute component={Hopper} />
            <Route path="/dashboard" component={Dashboard} />
        </Route>
    </Router>
  );
};

routes/MainLayout.js

import React, { PropTypes } from 'react';
import Layout from '../components/MainLayout/Layout';

const MainLayout = (props) => {
    // const { username, current } = user;
    const layoutProps = {
        user: {
            current: 'hopper',
            username: 'cjc',
        },
        children: props.children,
    };
    return (
        <div>
            <Layout {...layoutProps} />
        </div>
    );
}

MainLayout.propTypes = {
};

export default MainLayout;

routes/Hopper.js

import React, { PropTypes } from 'react';
import HopperList from '../components/Hopper/HopperList';

function Hopper() {
    const hopperList = {};
    return (
        <div>
            <HopperList {...hopperList} />
        </div>
    );
}

Hopper.propTypes = {
};

export default Hopper;

components/MainLayout/Layout.js

import React, { PropTypes } from 'react';
import { Menu, Icon } from 'antd';
import { Link } from 'dva/router';
import styles from './Layout.scss';

const SubMenu = Menu.SubMenu;

const Layout = (user, children) => {
    const { username, current } = user;
    return (
        <div>
            <div className={styles.leftMenu}>
                <img src='../src/assets/images/logo.png' className={styles.logo}/>
                <Menu theme="dark"
                      mode="inline"
                      defaultSelectedKeys={[current]}
                >
                    <Menu.Item key="dashboard">
                        <Link to="/dashboard">看板</Link>
                    </Menu.Item>
                    <Menu.Item key="hopper">
                        <Link to="/hopper">漏斗</Link>
                    </Menu.Item>
                </Menu>
            </div>
            <div className={styles.rightWrap}>
                <Menu mode="horizontal">
                    <SubMenu title={<span><Icon type="user" />{username}</span>} className={styles.fr}>
                        <Menu.Item key="setting:1">退出</Menu.Item>
                    </SubMenu>
                </Menu>
                <div className={styles.rightBox}>

                </div>
            </div>
        </div>
    );
};

export default Layout;

刚接触react,比较小白,另外觉得组织组件方面好像不太懂

解决方案

components/MainLayout/Layout.js

import React, { PropTypes } from 'react';
import { Menu, Icon } from 'antd';
import { Link } from 'dva/router';
import styles from './Layout.scss';

const SubMenu = Menu.SubMenu;

const Layout = (user, children) => {
    const { username, current } = user;
    return (
        <div>
            <div className={styles.leftMenu}>
                <img src='../src/assets/images/logo.png' className={styles.logo}/>
                <Menu theme="dark"
                      mode="inline"
                      defaultSelectedKeys={[current]}
                >
                    <Menu.Item key="dashboard">
                        <Link to="/dashboard">看板</Link>
                    </Menu.Item>
                    <Menu.Item key="hopper">
                        <Link to="/hopper">漏斗</Link>
                        // 改成<Link to="/">漏斗</Link>就应该OK了。你在路由中并没有定义这个路径
                    </Menu.Item>
                </Menu>
            </div>
            <div className={styles.rightWrap}>
                <Menu mode="horizontal">
                    <SubMenu title={<span><Icon type="user" />{username}</span>} className={styles.fr}>
                        <Menu.Item key="setting:1">退出</Menu.Item>
                    </SubMenu>
                </Menu>
                <div className={styles.rightBox}>

                </div>
            </div>
        </div>
    );
};

export default Layout;

这篇关于react.js - [react-router] Location &quot;/hopper&quot; did not match any routes的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆