Так что я собирался обсудить Наследование и Композицию повсюду. Я расскажу о своем прецеденте.Реагирующая композиция против наследования
Я создаю иерархию компонентов, использующих реакцию. Например, кнопка кнопки -> buttonBar. Поэтому для таких вещей любые функциональные возможности, которые я определил в компоненте кнопки, должны присутствовать, как и в компонентах buttonBar.
class Button extends React.Component {
shouldComponentUpdate() {
//do some prevalidation
return result;
}
myButtonfn =() => {
//do Something here
}
myButtonfn2 =() => {
//doSomething else
}
}
class ButtonBar extends Button {
shouldComponentUpdate() {
return myLogic && super.shouldComponentUpdate.call(this);
}
myButtonBarfn =() => {
//I should be able to do this
this.myButtonfn();
this.myButtonfn2();
}
}
В настоящее время я реализовал наследование для достижения этого. Каков правильный способ этого? Я не хочу возвращаться к использованию es5. React.createClass.
Мое использование функций в компоненте.
class Button extends React.Component {
shouldComponentUpdate() {
//do some prevalidation
return result;
}
myButtonfn =() => {
//do Something here
}
myButtonfn2 =() => {
//doSomething else
}
}
class ButtonBar extends React.Component {
doSomething =() => {
this.refs.abcd.myButtonfn();//To be able to do this, HOC doesn't work
}
render =() => {
return (<Button ref="abcd"/>);
}
}
Посмотрите на более высоких компонентов порядка - https://facebook.github.io/react/docs/higher-order-components.html и передавая свои функции вниз как реквизит –
@TMitchell Просто мысль, вам не кажется, что HOC слишком много для чего он хочет? –
@TahnikMustasin слишком много в каком смысле? –