reactjs - 如何在react-router-dom v6中的事件NavLink中显示不同的图标?

标签 reactjs react-router-dom

我想在特定导航链接处于事件状态时显示不同的图标。

我制作了一个新组件

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

const CustomNavLink = ({ to, activeIcon, inActiveIcon }) => {
  const [isActive, setIsActive] = useState(false);
  const changeActive = ({ isActive }) => setIsActive(isActive);
  return (
    <NavLink to={to} className={changeActive}>
      {isActive ? activeIcon : inActiveIcon}
    </NavLink>
  );
};

export default CustomNavLink;

enter image description here 但是当我使用这段代码时,它给了我这个错误。 如何解决这个错误?

最佳答案

NavLink 已经有自己的内部 isActive 状态,无需重复。 className 属性应返回字符串类型或未定义。使用 children 属性函数,而不是在渲染期间尝试将状态更新排入队列。

示例:

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

const CustomNavLink = ({ to, activeIcon, inActiveIcon }) => {
  return (
    <NavLink
      to={to}
      children={({ isActive }) => isActive ? activeIcon : inActiveIcon}
    />
  );
};

export default CustomNavLink;

const CustomNavLink = ({ to, activeIcon, inActiveIcon }) => {
  return (
    <NavLink to={to}>
      {({ isActive }) => isActive ? activeIcon : inActiveIcon}
    </NavLink>
  );
};

关于reactjs - 如何在react-router-dom v6中的事件NavLink中显示不同的图标?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71589838/

相关文章:

node.js - 为客户端和服务器创建docker文件

javascript - 如果操作为 true,则从 OnPress 更新状态

dom - ReactJS 可以根据服务器端渲染的 DOM 初始化其状态吗?

javascript - 无法使用 Link 组件传递状态。为什么状态未定义?

javascript - 如何使用 react 路由器 dom v6 在路由更改时滚动到顶部?

javascript - React-router-dom v6 仅渲染默认路由

javascript - react native 电话号码输入

reactjs - 如何创建转发依赖项的 React hooks

javascript - 具有多个搜索参数的 React-Router 位置

javascript - React Router - 一起使用 MemoryRouter 和 Router 进行路由(有些链接使用内存,而其他链接则更改 url)