javascript - react : menu + submenu + content

标签 javascript reactjs react-router

我正在学习 React JavaScript 库。 我想创建一个具有以下布局的简单网络应用程序:菜单 + 子菜单 + 内容。我使用 react 15.0.2、react-router 2.4.0、babel 6.5.2 和 webpack 1.13.0。

我可以创建菜单 + 内容布局,但我不知道添加子菜单部分的最佳做法是什么。

我的应用看起来像这样:

Home ~ About ~ Contact ~ Profile

content...

我想在Profile菜单项下添加一个子菜单,但是前3个菜单项没有子菜单。因此,如果我单击关于和联系链接,那么我想在主菜单栏下看到正确的内容。如果我单击配置文件链接,则需要显示一个子菜单。点击菜单+子菜单对下需要显示内容的子菜单项:

Home ~ About ~ Contact ~ Profile

Profile-Submenu 1 ~ Profile-Submenu 2 ~ ...

content...

App.js

ReactDom.render(
    <Router>
        <Route component={MainLayout}>
            <Route path="/" component={Home} />
            <Route path="home" component={Home} />
            <Route path="about" component={About} />
            <Route path="contact" component={Contact} />
            <Route path="profile" component={Profile} />
        </Route>
    </Router>,  
    document.getElementById('root')
);

MainLajout.js

export default class MainLayout extends React.Component {
    render() {
        return (
            <div>
                <MainMenu />
                <main>{this.props.children}</main>
            </div>
        );
    }
}

主菜单.js

export default class MainMenu extends React.Component {
    render() {
        return (
            <div style={style.container}>
                <Link to='/'>Home</Link>
                {'\u00a0'}~{'\u00a0'}
                <Link to='/about'>About</Link>
                {'\u00a0'}~{'\u00a0'}
                <Link to='/contact'>Contact</Link>
                {'\u00a0'}~{'\u00a0'}
                <Link to='/profile'>Profile</Link>
            </div>
        );
    }
}

你能指引我正确的方向吗?

最佳答案

您可能会将当前路径作为 Prop 传递给 MainMenu

export default class MainLayout extends React.Component {
    render() {
        return (
            <div>
                <MainMenu path={this.props.location.pathname} />
                <main>{this.props.children}</main>
            </div>
        );
    }
}

然后在你的主菜单中

export default class MainMenu extends React.Component {
    render() {
        let submenu = null;
        if (/^\/profile/.test(this.props.path)) {
            submenu = <div style={style.submenu}>
                <Link to='/profile/submenu-1'>Submenu 1</Link>
                <Link to='/profile/submenu-2'>Submenu 2</Link>
            </div>
        }
        return (<div>
            <div style={style.container}>
                <Link to='/'>Home</Link>
                {'\u00a0'}~{'\u00a0'}
                <Link to='/about'>About</Link>
                {'\u00a0'}~{'\u00a0'}
                <Link to='/contact'>Contact</Link>
                {'\u00a0'}~{'\u00a0'}
                <Link to='/profile'>Profile</Link>
            </div>
            {submenu}
        </div>);
    }
}

关于javascript - react : menu + submenu + content,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37149962/

相关文章:

javascript - 在 React Native 中的组件之间导航

javascript - 如何使用ajax调用从现有url显示json数据

javascript - pdfmake 得到错误的页面位置大小

javascript - 如何在 React 中将事件处理程序作为 Prop 传递?

reactjs - 如何将 javascript 生成的 DOM 元素传递给渲染函数

reactjs - React 中的派生状态是什么,为什么它很重要?

打开 Chrome 开发工具后 Reactjs 应用程序会变慢

reactjs - React 路由器不刷新页面

javascript - 如何从 Javascript 将 Json 保存到 django 数据库中

javascript - 如何遍历 jquery 中的每个父列表项?