2016-08-21 3 views
3

Допустим, я определяю компонент, как это:обезьяны заплат Реагировать компоненты

const myComponent = class MyComponent extends React.Component {} 

, а затем я хотел бы добавить конструктор к определенному компоненту, как это:

myComponent.constructor = function(props) { 
    super(props) 
    this.state = { hello: 'world' } 
} 

Кто-нибудь знает, если это возможно? Если да, то кто-нибудь знает, какие различия в реализации требуются по сравнению с вышеуказанным? Благодаря!

+0

Является ли это «наукой» или у вас есть веские основания для этого? – azium

+1

Мне бы очень хотелось услышать ваш случай использования. Компоненты, как правило, предназначены для повторного использования и «глупых». Переопределение конструктора немного углубляется в компонент для моего вкуса. Может быть, вы можете справиться с различиями в поведении, передав вместо этого реквизит? –

+0

Пришел для прецедента, если я правильно понял, что вы намереваетесь, это классы патчей обезьян в js, и это звучит неправильно – martriay

ответ

1

Вы не можете переопределить конструктор для классов es6. Вы можете сделать это с помощью классов es5, поэтому он будет работать (и быть хрупким) с babel.

Для других методов вы могли бы сделать

MyComponent.prototype.methodName = function() {} 

Это ИМО отсутствует функция, как это позволит лучше инъекции зависимостей.

Если TC39 должен наткнуться на эту страницу, мне бы очень хотелось иметь Reflect.setConstructor.

Смежные вопросы