Вот проблема, сначала этот проект создается с помощью 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,
},
},
},
});
вот снимок ошибки в консоли:
да, это не действительная опора navlink, я понял это из онлайн-справки
нет реквизита 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; }
activeStyle
не задокументировано: reactrouter.com/en/main/components/nav-link Вы уверены, что это реквизит? Вы всегда можете проверить исходный код, если не доверяете документам.