Если компонент не был разработан для настройки, простого способа сделать это не существует.
Button
- пример плохо сконструированного компонента, поскольку он не принимает дополнительные реквизиты. Вопрос и PR могут быть отправлены в хранилище для решения исходной проблемы.
В расширенном компоненте это можно исправить, передавая реквизиты из расширенного компонента.
Родитель render
Результат может быть изменен:
class ButtonExtend extends Button {
// ... more code above
render() {
const button = super.render();
const { symbol, children, ...props } = this.props;
return React.cloneElement(button, {
children: [
symbol && <Icon symbol={symbol} />,
...children
],
...props
});
}
Если элемент, который необходимо изменить, является вложенным, это может стать грязным и привести к ненужному созданию элементов.
Более чистый способ - вставить render
в расширенный компонент и изменить его:
class ButtonExtend extends Button {
// ... more code above
render() {
const { symbol, children, ...props } = this.props;
return (
<button className={this.getClasses()} {...props}/>
{symbol && <Icon symbol={symbol} />}
{children}
</button>
)
}
}
Таким образом, его можно использовать как
<ButtonExtend onClick={resetState} type="submit" name="extended button" />