Я все еще на пути к завоеванию React. Я предпочитаю использовать компонентный подход на основе es6 при создании классов React. И я задержался в тот момент, когда необходимо наследовать какой-то существующий класс с уже определенным staticProps статическим свойством.React extends defautProps
import {Component} from 'react';
class MyBox extends Component {
}
// Define defaultProps for MyBox
MyBox.defaultProps = {
onEmptyMessage: 'Nothing at here'
}
Когда я определить статические defaultProps свойств класса, которые простираются MyBox, он полностью переписывает defaultProps из родительского класса.
class MyItems extends MyBox {
render() {
// this.props.onEmptyMessage is undefined here
// but this.props.onRemoveMessage is present
return <i>{this.props.onEmptyMessage}</i>; //<i></i>
}
}
// Define defaultProps for MyItems
MyItems.defaultProps = {
onRemoveMessage: 'Are you sure?'
}
Но мне нужно расширить defaultProps родительского класса, а не перезаписывать. Я понимаю, что это возможно, распространяя непосредственно свойство defaultProps родительского класса.
MyItems.defaultProps = _.extend(MyBox.defaultProps, {
onRemoveMessage: 'Are you sure?'
});
Но я думаю, что такой трюк грязный. Есть ли способ выполнить его в соответствии с планом React?
Ваша концепция понятна. Но что, если мне не нужно иметь метод render() в родительском классе? В моем случае myBox является шаблоном для создания многих других классов с собственными методами render() и функциональностью на основе методов родительского класса и предопределенных значений. –
Тогда вы можете использовать декоратор, ИМО, он сделан для этого –