Open yarastqt opened 5 years ago
Нашел ещё один кейс, когда возникает такая же проблема:
const Textinput = ({ addonBefore, ...props }: any) => {
return <input {...props} />
}
const withClear = withBemMod('Textinput', { hasClear: true }, (Wrapped: any) => ({ hasClear, ...props }: any) => (
<Wrapped {...props} addonBefore={<>X</>} />
))
const TextinputEnhanced = withClear(Textinput)
const App = () => (
<TextinputEnhanced hasClear={false} />
)
Есть так же базовый компонент который принимает все свойства, и есть опциональный модификатор, который может быть выключен, в итоге мы получаем на DOM узле не валидный атрибут.
Нашел ещё один кейс, когда возникает такая же проблема:
const Textinput = ({ addonBefore, ...props }: any) => { return <input {...props} /> } const withClear = withBemMod('Textinput', { hasClear: true }, (Wrapped: any) => ({ hasClear, ...props }: any) => ( <Wrapped {...props} addonBefore={<>X</>} /> )) const TextinputEnhanced = withClear(Textinput) const App = () => ( <TextinputEnhanced hasClear={false} /> )
Есть так же базовый компонент который принимает все свойства, и есть опциональный модификатор, который может быть выключен, в итоге мы получаем на DOM узле не валидный атрибут.
Возпроизвел код: https://codesandbox.io/s/vigilant-surf-bxqnc
Можете объяснить ошибку? Вижу только ошибку в консоли, это и есть она?
Проблема
Хочется иметь возможность контролировать свойства которые будут переданы в оборачиваемый компонент из модификатора.
Имеется кейс:
Хотелось бы, чтобы в обернутый компонент не попадали определенные свойства, которые будут невалидны для HTML размети, можно было бы сделать
omit
для такого свойства:Но такой вариант слишком громоздкий, а подобных кейсов очень много.
Предложение
По дефолту удалять те свойства на которые сматчился модификатор, но дать возможность оставлять нужные свойства, передав в качестве второго аргумента массив из предиката и свойств которые нужно оставить (либо сделать наоборот).
Вариант 1
Вариант 2
Свойства можно удалять/оставлять только те, что описаны в интерфейсе модификатора.