Какова цель опции shouldForwardProp в styled()?

#reactjs #material-ui

Вопрос:

Я смог собрать воедино то , что shouldForwardProp указывает, какие реквизиты должны быть переданы завернутому элементу, переданному в качестве опции styled() , но мне трудно найти понятный пример его использования.

Является ли пересылка реквизита здесь сродни передаче реквизита в React?

Зачем нужно предотвращать пересылку определенных реквизитов в обернутый элемент во время использования styled() ?

Простите меня за мое невежество или если в моем вопросе не хватает ясности — я все еще изучаю MUI и пытаюсь разобраться в этом.

Ответ №1:

Если вы используете встроенные компоненты, такие как div или span , и вы хотите разрешить пользователю настраивать стили с помощью некоторых реквизитов.

 const MyComponent = styled('div')(({ bgColor }) => ({
  backgroundColor: bgColor,
}));
 

Когда вы используете его таким образом:

 <MyComponent bgColor='red'>
 

Реквизит передается реальному элементу в дереве DOM в качестве атрибута:

введите описание изображения здесь

И отреагируй пожалуюсь, что-то вроде:

 Warning: React does not recognize the `bgColor` prop on a DOM element. If you intentionally want it to appear in the DOM as a custom attribute, spell it as lowercase `bgcolor` instead. If you accidentally passed it from a parent component, remove it from the DOM element.
 

Вот почему shouldForwardProp существует, чтобы предотвратить передачу реквизитов стиля и создание недопустимого атрибута:

 const MyComponent = styled('div', {
  shouldForwardProp: (props) => props !== 'bgColor',
})(({ bgColor }) => ({
  backgroundColor: bgColor,
}));