Я должен предварить это, сказав, что очень мало понимаю в декораторах es7. По сути, мне нужен декоратор с именем @model
, который добавляет функцию к компоненту с именем model
. Так, например, я бы назвал это так
@model class FooBar extends Component { }
и тогда класс FooBar теперь будет иметь функцию модели.
Вот что я пробовал:
Model.js
export default function reactModelFactory( ctx ){
return (key)=>{
return {
onChange: (e)=>ctx.setState({[key]:e.target.value}),
value: ctx.state[key],
name: key
};
};
};
function modelDecorator() {
return function(ctx){
return class extends ctx{
constructor(...args){
super(...args);
this.model = reactModelFactory(this);
}
}
}
}
export { modelDecorator as model };
Логин.js
import React,{PureComponent} from 'react';
import {model} from './Model';
@model class Login extends PureComponent{}
React выдает сообщение об ошибке:
TypeError: супервыражение должно быть либо нулевым, либо функцией, а не объектом
Я без понятия что это значит. Я ищу некоторую помощь в том, чтобы мой декоратор работал, и бонусом было бы понимание концепции декораторов вообще.