Из-за того, как оригинальный компонент работает, компонент Option
является фиктивным компонентом, который никогда не обрабатывается и не используется в качестве заполнителя для данных Select
, его перенос в другой компонент не приносит никакой пользы.
Возможное решение должно быть расширено Select
вместо:
import {Select as OriginalSelect} from 'antd';
const Option = props => null;
const Select = ({ children, ...props }) => {
children = React.Children(children).map(child => {
if (child.type === Option) {
const {label, ...props} = child.props;
return <OriginalSelect.Option {...props}>{label}</OriginalSelect.Option>;
} else {
return child;
}
});
return <OriginalSelect {...props}>{children}</OriginalSelect>;
};
Кроме того, <Option value='foo' label='bar' />
не может считаться ярлыком для <Option value='foo'>bar</Option>
, потому что он такой же длины, поэтому, если толькоЦель оболочки Option
- сделать код короче, он избыточен.