【问题标题】:isActive style in react-router v.6react-router v.6 中的 isActive 样式
【发布时间】:2022-01-20 22:45:29
【问题描述】:

你能帮我理解为什么积极的风格总是活跃的吗?我有“react-router-dom”:“^6.1.1”。我尝试了不同的方式来应用这种风格,就像它在反应路由器文档中所写的那样,但我仍然找不到错误的原因。

import { NavLink } from "react-router-dom";
import s from "../Sidebar/Sidebar.module.css";

function Sidebar() {
  return (
    <div className={s.Sidebar}>
      <NavLink
        to="/profile"
        style={(isActive) => ({ color: isActive ? "green" : "blue" })}
        className={s.navItems}
      >
        Profile
      </NavLink>
      <NavLink
        to="/messages"
        style={(isActive) => ({ color: isActive ? "green" : "blue" })}
        className={s.navItems}
      >
        Messages
      </NavLink>
      <NavLink
        to="/news"
        style={(isActive) => ({ color: isActive ? "green" : "blue" })}
        className={s.navItems}
      >
        News
      </NavLink>
      <NavLink
        to="/music"
        style={(isActive) => ({ color: isActive ? "green" : "blue" })}
        className={s.navItems}
      >
        Music
      </NavLink>
      <br />
      <NavLink
        to="/settings"
        style={(isActive) => ({ color: isActive ? "green" : "blue" })}
        className={s.navItems}
      >
        Settings
      </NavLink>
    </div>
  );
}

export default Sidebar;
.navItems{
  display: flex;
  text-decoration: none;
  font-size: 26px;
  padding-bottom: 8px;
}

  [1]: https://i.stack.imgur.com/cCsBw.png

【问题讨论】:

    标签: react-router


    【解决方案1】:

    react-router-dom v6 中,isActive 是从传递给childrenclassNamestyleNavLink 道具的函数中解构的道具值。

    NavLink

    interface NavLinkProps
      extends Omit<
        LinkProps,
        "className" | "style" | "children"
      > {
      caseSensitive?: boolean;
      children?:
        | React.ReactNode
        | ((props: { isActive: boolean }) => React.ReactNode);
      className?:
        | string
        | ((props: { isActive: boolean }) => string);
      end?: boolean;
      style?:
        | React.CSSProperties
        | ((props: {
            isActive: boolean;
          }) => React.CSSProperties);
    }
    

    style 回调中解构isActivestyle={({ isActive }) =&gt; ({ color: isActive ? "green" : "blue" })}

    <NavLink
      to="/profile"
      style={({ isActive }) => ({ color: isActive ? "green" : "blue" })}
      className={s.navItems}
    >
      Profile
    </NavLink>
    

    【讨论】:

    • 非常感谢!!我似乎一直很困惑,但现在我明白了
    猜你喜欢
    • 2022-06-20
    • 1970-01-01
    • 1970-01-01
    • 2022-10-14
    • 2019-06-12
    • 2018-01-22
    • 2022-11-27
    • 2018-12-15
    • 2016-03-26
    相关资源
    最近更新 更多