Olá, bom dia, a minha dúvida é que, como eu venho do mundo Java, por exemplo o binding feito pelo JSF em seus Managed Beans ou Beans do CDI , são feitos atravéz da EL(Expression Language), então eu poderia criar uma pasta "src/models" que guarda classes que representaria o modelo do sistema, por exemplo poderia exportar uma classe Autor, e atravéz das propriedades get e set , poderia fazer um binding transparete no JSX, por exemplo:
<input value={this.state.autor.nome} onChange={this.setNome} >
<input value={this.state.autor.email} onChange={this.setEmail} >
<input value={this.state.autor.senha} onChange={this.setSenha} >
class App extends Component {
constructor() {
super(); // chama o constructor de Component
this.state = { autor: new Autor() , autores: []}
this.cadastraAutor = this.cadastraAutor.bind(this);
this.setNome = this.setNome.bind(this);
this.setEmail = this.setEmail.bind(this);
this.setSenha = this.setSenha.bind(this);
}
setNome(reactEvent) {
let autor = this.state.autor;
autor.nome = reactEvent.target.value;
this.setState({"autor": autor});
}
setEmail(reactEvent) {
let autor = this.state.autor;
autor.email = reactEvent.target.value;
this.setState({"autor": autor});
}
setSenha(reactEvent) {
let autor = this.state.autor;
autor.senha = reactEvent.target.value;
this.setState({"autor": autor});
}
componentDidMount() {
$.ajax({
...,
success: function(data) {
this.setState({
autores: data.map(autor => new Autor(autor.id, autor.nome, autor.email));
})
}.bind(this)
...
})
}
}
e na classe "src/models/Autor"
export default class Autor {
constructor(_id = '', _nome = '', _email = '', _senha='') {
Object.assign(this, {
_id,
_nome,
_email,
_senha
});
}
get id() { return this._id; }
set nome(nome) { this._nome = nome; }
get nome(){ return this._nome }
set email(email) { this._email = email; }
get email() {return this._email; }
set senha(senha) { this._senha = senha; }
get senha() { return this._senha }
toJSON() {
return JSON.stringify({ nome: this._nome,
email: this._email, senha: this._senha })
}
toAutor(autorStr) {
return JSON.parse(autorStr);
}
}
Então , essa forma de utilizar o {} do JSX, e passar o getter do meu modelo para o value seria uma forma que "GASTARIA MAIS PROCESSAMENTO" ou seria BOA PRÁTICA ou seria "DESNECESSÁRIO"?, ao meu ver eu estaria utilizando bem mais o Conceito de Orientação a Objetos e o Padrao MVC já que já teria um Model , visto que a classe Autor seria nada mais que um POJO na realidade, apenas uma classe que guardaria o valor de um Autor.