IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> JavaScript知识库 -> React - 路由 NavLink 使用 与 NavLink 组件封装使用(路由高亮) -> 正文阅读

[JavaScript知识库]React - 路由 NavLink 使用 与 NavLink 组件封装使用(路由高亮)

React - 路由 NavLink 使用 与 NavLink 组件封装使用(路由高亮)

一. NavLink 理解

  1. NavLink 可以实现路由的高亮,通过 activeClassName 属性指定样式名(应避免使用 active)。
  2. 标签体内容是一个特殊的标签属性。
  3. 通过 this.props.children 可以获取标签体内容。

二. NavLink 使用

import React, { Component } from "react";
import { Route, NavLink } from "react-router-dom";
import Home from "./pages/Home";
import About from "./pages/About";
import "./app.css";
export default class App extends Component {
  render() {
    return (
      <div className="wrap">
        <div className="left">
          {/* 路由跳转 */}
          <ul>
            <li>
              <NavLink
                className="link_item"
                activeClassName="link_active"
                to="home"
              >
                Home
              </NavLink>
            </li>
            <li>
              <NavLink
                className="link_item"
                activeClassName="link_active"
                to="about"
              >
                About
              </NavLink>
            </li>
          </ul>
        </div>
        <div className="right">
          {/* 注册路由 */}
          <Route path="/about" component={About} />
          <Route path="/home" component={Home} />
        </div>
      </div>
    );
  }
}

app.css

.wrap {
  width: 100%;
  height: 100%;
  display: flex;
}
.left {
  width: 200px;
  height: 100%;
  border-right: 1px solid #bbb;
  box-sizing: border-box;
}
ul {
  list-style: none;
}
li {
  width: 100%;
  height: 40px;
  line-height: 40px;
  border-bottom: 1px solid #bbb;
}
.link_item {
  width: 100%;
  height: 100%;
  display: block;
}
.link_active {
  color: red !important;
  background-color: aquamarine !important;
}
.right {
  width: calc(100% - 200px);
}

三. NavLink 封装使用

import React, { Component } from "react";
import { Route } from "react-router-dom";
import Home from "./pages/Home";
import About from "./pages/About";
import MyNavLink from "./components/MyNavLink";
import "./app.css";
export default class App extends Component {
  render() {
    return (
      /**
       * 也可使用 activeClassName(string) class类名 设置样式
       */
      <div style={{ width: "100%", height: "100%", display: "flex" }}>
        <div
          style={{
            width: "200px",
            height: "100%",
            borderRight: "1px solid",
            boxSizing: "border-box",
          }}
        >
          {/* 路由跳转 */}
          <ul style={{ listStyle: "none" }}>
            <li
              style={{
                width: "100%",
                height: "40px",
                lineHeight: "40px",
                borderBottom: "1px solid #bbb",
              }}
            >
              <MyNavLink to="home">Home</MyNavLink>
            </li>
            <li
              style={{
                width: "100%",
                height: "40px",
                lineHeight: "40px",
                borderBottom: "1px solid #bbb",
              }}
            >
              <MyNavLink to="about">About</MyNavLink>
            </li>
          </ul>
        </div>
        <div style={{ width: "calc(100% - 200px)", height: "100%" }}>
          {/* 注册路由 */}
          <Route path="/about" component={About} />
          <Route path="/home" component={Home} />
        </div>
      </div>
    );
  }
}

MyNavLink

import React, { Component } from "react";
import { NavLink } from "react-router-dom";

export default class MyNavLink extends Component {
  render() {
    console.log(this.props);
    return (
      /**
       * 也可使用 activeStyle(class类) 设置样式
       * activeClassName(string):设置 高亮class类名,默认值为active
       * activeStyle(object):设置 高亮style样式
       */
      <NavLink
        activeStyle={{
          color: "#fff",
          background: "#03a9f4",
        }}
        style={{
          width: "100%",
          height: "100%",
          display: "block",
        }}
        {...this.props}
      />
    );
  }
}
  JavaScript知识库 最新文章
ES6的相关知识点
react 函数式组件 & react其他一些总结
Vue基础超详细
前端JS也可以连点成线(Vue中运用 AntVG6)
Vue事件处理的基本使用
Vue后台项目的记录 (一)
前后端分离vue跨域,devServer配置proxy代理
TypeScript
初识vuex
vue项目安装包指令收集
上一篇文章      下一篇文章      查看所有文章
加:2022-08-06 10:34:49  更:2022-08-06 10:36:14 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 13:40:42-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码