@deight

Какие плюсы и минусы наследования компонентов в react?

Какие плюсы и минусы у наследования и композиции?
class Button extends React.Component {
  get content () {
    return 'Content: ' + this.props.content
  }
  render () {
    return <button>{this.content}</button>
  }
}
// чем лучше и чем хуже использование такого подхода
class SuperButton1 extends Button {
  get content () {
    return super.content + ' (Super)'
  }
}
// и такого
class SuperButton2 extends React.Component {
  render () {
    return <Button content={this.props.content + ' (Super)'} />
  }
}


Я не говорю конкретно про этот пример, я говорю в целом. Никакой адекватной инфы нет в интернете. В fb говорят используйте композицию, потому что у них не возникало надобности в наследовании (это ни разу не аргумент, вот у меня возникла). Кто-то говорит что тяжело поддерживать, но примеров конкретных нет. Есть примеры которые типа показывают несовершенство ООП в целом, но то во что они упирались и говорили что вот мол проблема, я не видел в этом проблемы потому, что ее легко решить. Буду благодарен за любой комментарий на эту тему.
  • Вопрос задан
  • 1516 просмотров
Пригласить эксперта
Ответы на вопрос 1
RubaXa
@RubaXa
Ну, попробуйте, но заведите метрику в виде changelog и пишете, сколько раз потомок X сломался из-за изменения родителя.

Просто ответить абстрактно сложно, по большому счёту, проблема в том, что при использовании ООП в UI-компонентах, все потомки становятся очень хрупкими. Да, это всё конечно покрывается тестами, но это только помогает быстро выявит проблему, а проблема на самом деле в переопределении.

View-компоненты на самом деле проще не наследовать, а сделать точки расширения и через `props`, в конкретном месте, передать нужные функции `renderSomeFragment/children` в замен default'ных. Т.е. вам не нужно городить новый класс и потом его использовать, вы просто его используете и всё.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы