Я в настоящее время наследование ES6 Реагировать базовый компонент следующим образом:Реагировать наследование компонентов ES6: работает, но не рекомендуется?
model.js (базовый компонент):
class ModelComponent extends React.Component {
render() {
// Re-used rendering function (in our case, using react-three's ReactTHREE.Mesh)
...
}
}
ModelComponent.propTypes = {
// Re-used propTypes
...
};
export default ModelComponent;
Тогда у меня есть две простирающиеся компоненты, как выглядят в основном так:
import ModelComponent from './model';
class RobotRetroComponent extends ModelComponent {
constructor(props) {
super(props);
this.displayName = 'Retro Robot';
// Load model here and set geometry & material
...
}
}
export default RobotRetroComponent;
Это, кажется, работает нормально. Обе модели появляются и работают, как я ожидал.
Тем не менее, я читал в нескольких местах, что наследование не является правильным подходом с React - вместо этого я должен использовать композицию. Но опять же, Mixins не поддерживаются в React v0.13?
Итак, это подход, который я принимаю выше ОК? Если нет, то в чем проблема, и как мне это сделать?
Mixins поддерживаются в React v0.13, только не при использовании классов ES6. Вы можете использовать формат React.createClass ({mixins: []}) для микширования. – Crob
Спасибо @Crob. Было бы лучше, чем использовать наследование класса ES6? Вышеприведенное кажется мне проще ...? – poshaughnessy
Если единственной повторно используемой частью вашего компонента является функция 'render' и ее' propTypes', почему примечание содержит ваши компоненты, составляющие ее в своих методах рендеринга? В реактиве композиция предпочтительнее над наследованием. –