Как применить стилизованный стиль компонента к свойству, не относящемуся к имени класса?

#reactjs #material-ui #styled-components #emotion

Вопрос:

Я использую @mui/material и сторонний компонент, который имеет два свойства: className и wrapperClassName . Настройка className реквизита тривиальна.

 import styled from '@mui/material'; import { Checkbox as _Checkbox } from 'my-checkbox-component';  const Checkbox = styled(_Checkbox)`  // my styles here `;  

Я хочу знать, как создать стиль для wrapperClassName . Я пробовал использовать css его для создания.

 // @jsx import styled from '@mui/material'; import { css } from '@emotion/react'; import { Checkbox as _Checkbox } from 'my-checkbox-component';  const Checkbox = styled(props =gt; {  const wrapperClassName = css`  // my wrapper styles here  `.name;   return lt;_Checkbox {...props} wrapperClassName={wrapperClassName} /gt;; })`  // my styles here `;  

Это возвращает имя, но не добавляет lt;stylegt; элемент, содержащий правило.

Я мог бы сделать что-нибудь уродливое, например:

 import styled from '@mui/material'; import { Checkbox as _Checkbox } from 'my-checkbox-component';  const Checkbox = styled(({ className: wrapperClass, ...props }) =gt; {  const InnerCheckbox = styled(_Checkbox)`  // my styles here  `;   return lt;InnerCheckbox {...props} wrapperClassName={wrapperClass} /gt;; })`  // my wrapper styles here `;  

Это просто кажется очень неприятным.

Я тоже пробовал использовать lt;style jsxgt;{`/* my styles */`}lt;/stylegt; , но машинописный текст мне это не понравилось.