2016-08-18 3 views
0

Я хочу расширить класс React Component с помощью собственного класса.Generic Extended React Component Typcript

export class ReactComponent<P,S> extends React.Component<P,S> { 
    public doStuff() { 
     alert("Custom React Component"); 
    } 
} 

export class MyComponent extends ReactComponent<MyProps, any> { 
    render() { 
     return <div onLoad={this.doStuff()}></div>; 
    } 
} 

Это похоже на компиляцию, но при загрузке возникает следующая ошибка.

Uncaught TypeError: Super expression must either be null or a function, not undefined

Использование React 15.3, должно быть, что-то не хватает.

+1

Только предположение, но я уверен, что вы должны передать функцию 'onLoad' а не результат выполнения функции. Что-то вроде: 'onLoad = {this.doStuff.bind (this)}' –

+0

Кроме того, я бы не рекомендовал этот шаблон. отслеживание супервызов разочаровывает, и вы можете достичь всех одинаковых функциональных возможностей, просто обернув компоненты, не расширяющие их (или создавая компонент более высокого порядка). – azium

ответ

0

Uncaught TypeError: Super expression must either be null or a function, not undefined

Скорее всего, вопрос с заказом. Убедитесь, что javascript загружен в правильном порядке.

Больше

+0

Проверял внутренность файла, над которым я работал для краткости. Переместил класс в путь к файлу выше и назвал импорт, и все работает. –