У меня проблема при работе с react-router-dom версии 6

Вот проблема, сначала этот проект создается с помощью vite. У меня есть ошибка, которая говорит Warning: React does not recognize the activeStyle prop on a DOM element. Это первые несколько строк из ошибки. У меня возникает проблема, когда я добавляю реквизит activeStyle в компонент NavLink из react-router-dom, который должен быть его встроенным реквизитом, однако реакция не распознает его как действующий реквизит, как это может быть? Вы хоть представляете, что происходит?

вот компонент в проекте, который содержит ошибку:

Заголовок.jsx

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

const Header = () => {
  return (
    <div className = "header">
      <NavLink to = "/" activeStyle = {{ fontWeight: "bold", color: "red" }}>
        Home
      </NavLink>

      <NavLink to = "/about" activeStyle = {{ fontWeight: "bold", color: "red" }}>
        About
      </NavLink>
    </div>
  );
};

export default Header;

vite.config.js

import { defineConfig } from "vite";
import react from "@vitejs/plugin-react-swc";
import sass from "sass";

// https://vitejs.dev/config/
export default defineConfig({
  plugins: [react()],

  css: {
    preprocessorOptions: {
      sass: {
        implementation: sass,
      },
    },
  },
});

вот снимок ошибки в консоли:

activeStyle не задокументировано: reactrouter.com/en/main/components/nav-link Вы уверены, что это реквизит? Вы всегда можете проверить исходный код, если не доверяете документам.
mpen 05.04.2023 03:54

да, это не действительная опора navlink, я понял это из онлайн-справки

Reynald Lamury 05.04.2023 04:58
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Массив зависимостей в React
Массив зависимостей в React
Все о массиве Dependency и его связи с useEffect.
1
2
63
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

нет реквизита activeStyle, но есть реквизит обычного стиля, который ведет себя не так, как в обычном компоненте, где вы передаете ему объект стилей.

он работает немного иначе с компонентом navlink, поскольку он работает как опора для рендеринга. где вы должны передать функцию обратного вызова, а компонент navlink позаботится о стиле вы можете прочитать больше об этом отсюда https://reactrouter.com/ru/main/components/nav-link

вот пример

  const styles = {
    fontWeight: "bold",
    textDecoration: "underline",
    color: "#161616",
  };



<nav className = "header-nav">
        <NavLink
          style = {({ isActive }) => (isActive ? styles : null)}
          to = "/Host"
        >
          Host
        </NavLink>

также по умолчанию активный класс добавляется к компоненту, когда он активен, поэтому вы можете использовать CSS для его стилизации.

.header-nav a.active {
font-weight: bold;
text-decoration: underline;
color: #161616; }

Другие вопросы по теме