首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >响应-路由器跟踪活动链路

响应-路由器跟踪活动链路
EN

Stack Overflow用户
提问于 2017-04-05 18:30:06
回答 2查看 445关注 0票数 0

由于react路由器没有向链接或li的链接添加活动类,所以我希望将活动链接保持在我的菜单状态中。当我记录this.state.activeLink时,我得到了正确的值,但出于某种原因,类'activeLink‘没有添加到li中。为什么会这样呢?当我对isActive()进行日志记录时,它正确地返回了true或false,但是类仍然没有添加到li中。这里发生了什么事?

代码语言:javascript
复制
import React, { Component } from 'react';
import { Link } from 'react-router-dom';

import logo from '../images/logo.png';

export default class Navbar extends Component {
    constructor(props){
        super(props);

        this.state = { activeLink : '' };
        this.setActive = this.setActive.bind(this);
    }

    setActive(event){
        this.setState({ activeLink: event.target.id });
    }

    isActive(link){
        console.log('isActive:', link == this.state.activeLink);
        link == this.state.activeLink ? 'activeLink' : '';
    }

    render(){
        return (
            <div className="header">
                <div className="row">
                    <div className="header-left">
                        <div className="logo">
                            <img src={logo} alt=""/> 

                        </div>
                        <div className="header-title">Physical Twist</div>

                        <div className="menu">
                            <ul className="nav">
                                <li className={this.isActive('home')}><Link to="/" id="home" onClick={this.setActive}>Home</Link></li>
                                <li className={this.isActive('store')}><Link to="/store" id="store" onClick={this.setActive}>Store</Link></li>
                                <li className={this.isActive('catalogue')}> <Link to="#" id="catalogue" onClick={this.setActive}>Catalogue</Link></li>
                                <li className={this.isActive('contact')} ><Link to="#" id="contact" onClick={this.setActive}>Contact</Link></li>
                            </ul>
                        </div>                              
                    </div>
                </div>
            </div>
        );
    };
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-04-05 18:37:16

由于您忘记在return函数中添加isActive(),所以请使用以下命令:

代码语言:javascript
复制
isActive(link){
   console.log('isActive:', link == this.state.activeLink);
   return link == this.state.activeLink ? 'activeLink' : '';
}
票数 1
EN

Stack Overflow用户

发布于 2017-04-05 18:37:06

isActive没有返回任何东西。

代码语言:javascript
复制
isActive(link){
    link == this.state.activeLink ? 'activeLink' : '';
}

应该是

代码语言:javascript
复制
isActive(link){
    return link == this.state.activeLink ? 'activeLink' : '';
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43238989

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档