Propblem со ссылкой в ​​следующем js с типом script: свойство `href` ожидает `string` или `object` в `<Link>`, но вместо этого получило `undefined`

у меня есть этот код о компоненте Customized link, я сделал это по сценарию типа:

...
const NavLink: React.FC<{
  activeClassName: string;
  className: string;
  href: string;
  clickEvent?: MouseEventHandler;
  onClick?: MouseEventHandler;
  title: string;
}> = (children, props) => {...}
      

это моя строка компонента ссылки:

<Link href = {props.href} onClick = {props.clickEvent} passHref>

вот как я называю компонент:

<NavLink
                href='/'
                className = {styles.navlink}
                activeClassName = {styles.navlink__active}
                title='my link'
              />

я получил ошибку в названии. любая помощь?

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

Ответы 1

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

Это происходит из-за того, как вы получили props от вашего компонента.

При использовании React вы всегда должны получать props в качестве первого параметра функционального компонента.

В вашем случае вы сначала получили children, а затем props в качестве второго параметра, но это должен быть только один параметр, потому что свойство children также принимается в качестве реквизита.

Простой способ исправить это — деструктурировать children и использовать rest operator, чтобы по-прежнему получать остальные реквизиты в виде переменной с именем props, как в следующем примере:

const NavLink: React.FC<{
  activeClassName: string;
  className: string;
  href: string;
  clickEvent?: MouseEventHandler;
  onClick?: MouseEventHandler;
  title: string;
}> = ({ children, ...props }) => {...}

Это должно сохранить переменные с тем же именем, но теперь вы будете деструктурировать как дочерние элементы, так и все реквизиты из первого параметра функционального компонента.

я попытался получить свойство «дети» не существует для типа «{activeClassName: string; имя_класса: строка; ссылка: строка; clickEvent?: MouseEventHandler<Element> | неопределенный; onClick?: MouseEventHandler<Element> | неопределенный; заголовок: строка; }'

michael 22.11.2022 20:24

у меня есть чек: {дети !== undefined && children}

michael 22.11.2022 20:26

@michael, должно быть, потому что React.FC больше не добавляет дочерний тип к своим реквизитам. Вы можете добавить такие типы: children: React.ReactNode и TypeScript перестанет выдавать вам эту ошибку.

josepholiveira 22.11.2022 20:27

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