var LoginForm = React.createClass({ render: function() { return ( <form id="login-form"> <input type="text" id="login" placeholder="login" /> <input type="password" id="password" placeholder="password" /> <button type="submit">Login</button> </form> ) } }); React.render( <LoginForm />, document.getElementById('example'));
var LoginForm = React.createClass({ getInitialState: function(){ /* */ return { errorCode: 0, errorMessage: '', loginActions: [] }; }, doLogin: function(event) { event.preventDefault(); var successLogin = (Math.random() >= 0.5) ? true : false; var actions = this.state.loginActions; if (!successLogin) { actions.push('Login failure'); /* */ this.setState({errorCode: 1, errorMessage: 'Error while login.', loginActions: actions}); } else { actions.push('Login success'); this.setState({errorCode: 0, errorMessage: '', loginActions: actions}); } }, render: function() { /* */ var errorMessage = (this.state.errorCode > 0) ? this.state.errorMessage : ''; var errorStyle = (this.state.errorCode > 0) ? {display: 'block'} : {display: 'none'}; return ( <div> <form id="login-form"> <div> <input type="text" id="login" placeholder="login" /> <input type="password" id="password" placeholder="password" /> </div> <div> <button type="submit" onClick={this.doLogin}>Login</button> </div> <div style={errorStyle}> <span style={{color: '#d9534f'}}> {errorMessage}</span> </div> </form> <div className="actions-list"> /* actions */ <ActionsList actions={this.state.loginActions} /> </div> </div> ) } }); var ActionsList = React.createClass({ render: function() { /* , this.props */ return ( <ol> { this.props.actions.map(function(action) { return <li>{action}</li>; }) } </ol> ) } }); React.render( <LoginForm />, document.getElementById('example'));
<input type="text" id="login" placeholder="login" value=”admin” /> <input type="password" id="password" placeholder="password" value=”admpass” />
var LoginForm = React.createClass({ /* */ mixins: [React.addons.LinkedStateMixin], getInitialState: function(){ return { errorCode: 0, errorMessage: '', loginActions: [], defaultLogin: 'admin', defaultPassword: 'password' }; }, doLogin: function(event) { event.preventDefault(); var successLogin = (Math.random() >= 0.5) ? true : false; var actions = this.state.loginActions; if (!successLogin) { actions.push('Login failure'); this.setState({errorCode: 1, errorMessage: 'Error while login.', loginActions: actions}); } else { actions.push('Login success'); this.setState({errorCode: 0, errorMessage: '', loginActions: actions}); } }, render: function() { var errorMessage = (this.state.errorCode > 0) ? this.state.errorMessage : ''; var errorStyle = (this.state.errorCode > 0) ? {display: 'block'} : {display: 'none'}; return ( <div> <form id="login-form"> <div> /* valueLink */ <input type="text" ref="login" placeholder="login" valueLink={this.linkState('defaultLogin')} /> <input type="password" ref="password" placeholder="password" valueLink={this.linkState('defaultPassword')} /> </div> <div> <button type="submit" onClick={this.doLogin}>Login</button> </div> <div style={errorStyle}> <span style={{color: '#d9534f'}}> {errorMessage}</span> </div> </form> <div className="actions-list"> <ActionsList actions={this.state.loginActions} /> </div> </div> ) } }); var ActionsList = React.createClass({ render: function() { return ( <ol> { this.props.actions.map(function(action) { return <li>{action}</li>; }) } </ol> ) } }); React.render( <LoginForm />, document.getElementById('example'));
var LoginForm = React.createClass({ mixins: [React.addons.LinkedStateMixin], getInitialState: function(){ /* , , , loginActions */ return { errorCode: 0, errorMessage: '', loginActions: [], defaultLogin: 'admin', defaultPassword: 'password' }; }, clearActionList: function() { /* , loginActions */ this.setState({loginActions: []}); }, doLogin: function(event) { event.preventDefault(); var successLogin = (Math.random() >= 0.5) ? true : false; var actions = this.state.loginActions; if (!successLogin) { actions.push('Login failure'); this.setState({errorCode: 1, errorMessage: 'Error while login.', loginActions: actions}); } else { actions.push('Login success'); this.setState({errorCode: 0, errorMessage: '', loginActions: actions}); } }, render: function() { var errorMessage = (this.state.errorCode > 0) ? this.state.errorMessage : ''; var errorStyle = (this.state.errorCode > 0) ? {display: 'block'} : {display: 'none'}; return ( <div> <form id="login-form"> <div> <input type="text" ref="login" placeholder="login" valueLink={this.linkState('defaultLogin')} /> <input type="password" ref="password" placeholder="password" valueLink={this.linkState('defaultPassword')} /> </div> <div> <button type="submit" onClick={this.doLogin}>Login</button> </div> <div style={errorStyle}> <span style={{color: '#d9534f'}}> {errorMessage}</span> </div> </form> <div className="actions-list"> /* , , */ <ActionsList actions={this.state.loginActions} clearActions={this.clearActionList} /> </div> </div> ) } }); var ActionsList = React.createClass({ render: function() { return ( <div> /* , - this.props.clearActions */ <button onClick={this.props.clearActions}> Clear list </button> <ol> { this.props.actions.map(function(action) { return <li>{action}</li>; }) } </ol> </div> ) } }); React.render( <LoginForm />, document.getElementById('example'));
Source: https://habr.com/ru/post/269303/
All Articles