В настоящее время у меня очень простое приложение React, которое использует состояние для определения пары представлений. Нажатие на элемент submit вызывает простой вызов конечной точке, передающей логин или учетные данные. Я мог бы продолжить эту дорогу, чтобы использовать React, и JSON вернулся с сервера, чтобы определить мои взгляды, но я знаю, что это не подходит для обработки данных.Понимание того, как реализовать Flux-архитектуру с использованием Flummox
Мой вопрос: отсюда, как я могу использовать шаблон потока с использованием Flummox? Я запускаю действие с помощью полезной нагрузки и вызываю вызов API в действии или в магазине? Я пытаюсь понять, как правильно сделать этот переход из действия в моем пользовательском интерфейсе, моем вызове API, чтобы получить ответ и пользовательский интерфейс, реагирующий на изменение в магазине.
Ниже приведен код для моего компонента Auth. Я хотел бы посмотреть пример использования Flummox в такой простой ситуации, чтобы я мог понять, что нужно для масштабирования и добавления функций.
Auth.jsx
'use strict';
var React = require('react');
var request = require('request');
var Auth = React.createClass({
getInitialState: function() {
return {
name: '',
email: '',
pass: '',
passConfirm: '',
login: true,
register: false
};
},
handleLogin: function(){
this.setState({
login: true,
register: false
});
},
handleRegister: function(){
this.setState({
register: true,
login: false
});
},
handleName: function(event){
this.setState({
name: event.target.value
});
},
handleEmail: function(event){
this.setState({
email: event.target.value
});
},
handlePass: function(event){
this.setState({
pass: event.target.value
});
},
handlePassConfirm: function(event){
this.setState({
passConfirm: event.target.value
});
},
handleSubmit: function(){
var register = {
name: this.state.name,
email: this.state.email,
password: this.state.pass,
confirmPassword: this.state.passConfirm
};
var endpoint = 'http://localhost:3000';
request({
uri: endpoint + '/register',
method: 'POST',
json: register
}, function(error, response, body){
if (error) {
console.log(error);
} else {
console.log(response);
}
});
},
renderLogin: function() {
return (
<form className="login">
<div className="input-container">
<input type='text' value={this.state.email} onChange={this.handleEmail} placeholder="email" />
<input type='password' value={this.state.password} onChange={this.handlePass} placeholder="password" />
</div>
<div className="auth-submit" onClick={this.handleSubmit}>Login</div>
</form>
);
},
renderRegister: function(){
return (
<form className="register">
<div className="input-container">
<input type='text' value={this.state.name} onChange={this.handleName} placeholder="name" />
<input type='email' value={this.state.email} onChange={this.handleEmail} placeholder="email" />
<input type='password' value={this.state.pass} onChange={this.handlePass} placeholder="password" />
<input type='password' value={this.state.passConfirm} onChange={this.handlePassConfirm} placeholder="confirm password" />
</div>
<div className="auth-submit" onClick={this.handleSubmit}>Register</div>
</form>
);
},
render: function(){
var auth = null;
if (this.state.login) {
auth = this.renderLogin();
} else if (this.state.register) {
auth = this.renderRegister();
}
return (
<div className="auth-container">
<div className="auth-logo">Flow</div>
{auth}
<div className="auth-select">
<div className="auth-label-container">
<div className="auth-label" onClick={this.handleLogin}>Login</div>
</div>
<div className="auth-label-container">
<div className="auth-label" onClick={this.handleRegister}>Register</div>
</div>
</div>
</div>
);
},
});
module.exports = Auth;
Это именно тот тип объяснений, который я искал. благодарю вас за то, что нашли время, чтобы изложить это и подробно объяснить процесс, а также предложить, как реорганизовать многословие этого простого компонента. –