Ответ 1
В мире ES6/JSX/React вы можете расширить поведение компонентов и значения разными способами. Я бы порекомендовал одно из следующего, считая, что вы используете Material UI.
Первый случай:
У вас есть два компонента, которые расширяют Component
от React:
class ExampleComponent extends React.Component {
render () {
return(
<div>
<button {...this.props}>
Click me!
</button>
</div>
)
}
}
class RenderComponent extends React.Component {
clickHandler () {
console.log('Click fired!')
}
render () {
return(
<ExampleComponent onClick={this.clickHandler.bind(this)} />
)
}
}
В этом примере onClick
передается через реквизиты внутри отображаемого ExampleComponent
. Пример здесь.
Второй случай:
Это похоже на то, как Material UI расширяет свои собственные компоненты:
class ExampleComponent extends React.Component {
clickHandler () {
console.log('Click fired!')
}
}
class RenderComponent extends ExampleComponent {
render () {
return(
<div>
<button onClick={this.clickHandler.bind(this)}>
Click me!
</button>
</div>
)
}
}
В этом примере у вас есть компонент, который расширяет Component
от React, но имеет только методы событий. Затем вы расширяете этот компонент и предоставляете свое собственное расширенное поведение. Вот живой пример.
Надеюсь, что это поможет!