React.js 实现菜单[突出显示活动链接]

2024-02-29

以下 React.js 代码呈现一个导航栏,其中包含两个名为“about”和“project”的链接。页面加载时,“关于”链接处于活动状态并呈红色。单击另一个链接时,导航栏的状态将设置为“项目”,“关于”链接样式将被设置回来,并且“项目”将显示为红色。

我通过将单击处理程序附加到两个链接标记来实现此目的,并将活动状态设置为 event.target.innerHTML 的名称。

我是个新手,我觉得这是一种非常冗长的处理方式。我知道有一个 activeClassName 属性可以传递给react-router链接,但我想要一种不使用它的方法。

import React, { Component } from 'react'
import { Link, Route } from 'react-router'

export default class Navbar extends Component {
    constructor() {
        super();
        this.state = {
            active: 'about'
        }
        this._handleClick = this._handleClick.bind(this);
    }

    _handleClick(e) {
         this.setState({
            active: e.target.innerHTML
         });
    }

    render() {
        let aboutStyle;
        let projectStyle;

        if (this.state.active === 'about') {
            aboutStyle = { color: '#ff3333' };
            projectStyle = {};
        } else {
            aboutStyle = {};
            projectStyle = { color: '#ff3333' };
        }

        return (
        <div className='navbar'> 
            <Link to='/'><h2>BK &#47;&#47;</h2></Link>
            <div className='menu'>
                <Link style={aboutStyle} onClick={this._handleClick} to='about'>about</Link>
                <Link style={projectStyle} onClick={this._handleClick} to='projects'>projects</Link>
            </div>
        </div>
        )
    }
}

今天,您可以使用 NavLink 从react-router-dom。该对象支持的属性如下activeClassName, activeStyle, or isActive(对于函数)。

import { NavLink } from 'react-router-dom';

<NavLink to='about' activeClassName="active">about</NavLink>

// Or specifing active style
<NavLink to='about' activeStyle={{color: "red"}}>about</NavLink>

// If you use deep routes and you need an exact match
<NavLink exact to='about/subpath' activeClassName="active">about</NavLink>

有关更多选项,请阅读文档:https://reacttraining.com/react-router/web/api/NavLink https://reacttraining.com/react-router/web/api/NavLink

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

React.js 实现菜单[突出显示活动链接] 的相关文章

随机推荐

  • 溢出:滚动;在 中

    为什么 CSS 属性overflow scroll 不工作于 td while overflow hidden 效果很好 table border 1 style width 100px tr td style width 50px 100
  • CF9 中的 QueryNew() 数据类型

    我接管了运行 CF9 0 1 的生产服务器上的系统 但在开发人员版本中找不到该系统的副本 因此我正在运行 CF10 我正在将数据从数据库导出到 Excel 由于数据来自多个数据源 因此需要手动将结果输入到查询中 然后用于输出到 Excel
  • 如何比较/匹配两个不相同的声音片段

    我需要每 5 秒采集一次短声音样本 然后将其上传到我们的云服务器 然后 我需要找到一种方法来比较 检查该样本是否是完整长音频文件的一部分 样本将通过手机麦克风录制 因此它们确实不准确 我知道这个主题可能会变得非常技术性和复杂 但我确信一定有
  • Firestore 写入限制错误代码

    Firestore 目前处于测试阶段 并且有每秒写入次数限制 写入 Firestore 数据库时是否可以检查特定的 Firestore 写入错误代码 我的用例是我需要具有查询可能性的高吞吐量 通过检查写入错误代码 我可以稍后重试写入 根据官
  • 用于具有多种类型的嵌套对象的 RedisTemplate 哈希值序列化器

    我正在尝试使用 Redis 为我的实体存储一些缓存数据 其中包含不同类型的字段 例如 public class Job private String id private Date createTime Long private Strin
  • 使用 SDWebimage 通过 url 一张一张下载图像

    我需要从以下位置下载图像Array网址一一显示并一次显示全部 前任 我有 10 个 URL 的数组 我只需要一张一张地下载图像 并一次显示 我在用SDWebImage用于下载图像 请帮我 Thanks 你可以尝试这样的事情 void dow
  • 如何更新学说中的字段以将其设置为空

    我想将原则中的一个字段设置为 null 这是句子 em this gt getDoctrine gt getManager qb em gt createQueryBuilder query qb gt update Model Examp
  • 最小化 Three.js 抽奖次数

    我正在为我的项目测试 Three js 的使用 http agentscript org http agentscript org 并且第一个测试似乎很慢 https asx vqnhxlahpe now sh test html Thre
  • 通过 3 个下拉过滤器过滤客户记录的更好或优化方法

    我有一个页面名称为 客户列表 aspx我在上面显示客户列表 这也是我的表和类文件 public partial class Customer public int CustomerID get set public string FullN
  • Erlang 中的大型可变字节数组

    当我在 Erlang 中编写一个简单的 Minecraft 服务器应用程序时 我现在关心的问题是如何有效地存储和修改块数据 对于那些不了解 Minecraft 内部结构的人 我需要在内存中存储大量高达 32kB 大小的二进制文件 100 1
  • 将一个数据库复制到另一个数据库

    如何从一个数据库复制到另一个数据库 数据库名称visco 我想将所有表从 visco 数据库复制到新数据库名称 neptune 我创建了一个没有任何表的数据库 然后我尝试从database1 bak 文件恢复数据库 然后它显示错误为 You
  • 针对活动目录中的用户进行身份验证?

    我确实有一个 Web 应用程序 其中有一个登录页面 如何针对 Active Directory 用户进行身份验证 截至目前 我能够从活动目录中获取一些属性 这表明我能够使用 LDAP 字符串与 AD 进行通信 我知道不可能从 AD 中提取密
  • 如何传递上下文?

    我想将主要活动的上下文传递给另一个类以创建 Toast 我的主要活动调用一个将删除文件的类 如果文件不存在 删除文件的类将调用 toast 这是我的代码 public class MyActivity extends AppCompatAc
  • php资源是通过引用传递的吗?

    今天我发现除了对象和基元之外 PHP 还有资源 http php net manual en language types resource php 文档说明默认情况下php 按值传递名称 http php net manual en fu
  • 为什么我的闭包函数不想在 if 语句中重新分配其父函数变量?

    我创建了这个工厂函数 用于描述游戏逻辑 我使用内部函数来切换游戏中的玩家 问题是 当我尝试从内部函数中重新分配当前玩家时 它不起作用 当前的玩家永远不会改变 我想这是关于封闭的一些事情 我并没有真正理解 你能向我解释一下我缺少什么吗 这是我
  • 优化 MySQL 查询以避免扫描大量行

    我正在运行一个使用类似于下表的表的应用程序 有一个用于文章的表 还有另一个用于标签的表 我想按文章 ID 获取特定标签订单的最新 30 篇文章 例如 acer 下面的查询将完成这项工作 但它没有正确索引 因为如果有很多与特定标签相关的文章
  • 为什么我未完成的 JavaScript 游戏在第三次死亡后崩溃了?

    Commented because does not work in Sandbox window localStorage Ignore this line Where all my variables have been assigne
  • 获取 R 中帮助文档的(网络)URL?

    在 RStudio 中使用类似内容打开帮助文档时 function 我们如何 轻松 获得这些帮助文档的网页版 目前 我正在寻找一个独特的句子 并用引号搜索它 例如 要查找网络版本 function 我用谷歌搜索了 These functio
  • java中的batchGetItem API错误

    我正在查询的实体有一个HashKey ARangeKey 数字 当我使用batchGetItem就它而言 我收到以下错误 AWS 错误代码 ValidationException AWS 错误消息 一个或多个参数值无效 位置和架构之间的属性
  • React.js 实现菜单[突出显示活动链接]

    以下 React js 代码呈现一个导航栏 其中包含两个名为 about 和 project 的链接 页面加载时 关于 链接处于活动状态并呈红色 单击另一个链接时 导航栏的状态将设置为 项目 关于 链接样式将被设置回来 并且 项目 将显示为