登录页面
-  <div className="col-md-4 col-md-offset-4">
 -  <div className="panel panel-default login-panel">
 -  <div className="panel-heading">欢迎登录 - MMALL管理系统</div>
 -  <div className="panel-body">
 -  <div>
 -  <div className="form-group">
 -  <input type="text"
 -  name="username"
 -  className="form-control"
 -  placeholder="请输入用户名"
 -  onKeyUp={e => this.onInputKeyUp(e)}
 -  onChange={e => this.onInputChange(e)}/>
 -  </div>
 -  <div className="form-group">
 -  <input type="password"
 -  name="password"
 -  className="form-control"
 -  placeholder="请输入密码"
 -  onKeyUp={e => this.onInputKeyUp(e)}
 -  onChange={e => this.onInputChange(e)}/>
 -  </div>
 -  <button className="btn btn-lg btn-primary btn-block"
 -  onClick={e => {this.onSubmit(e)}}>登录</button>
 -  </div>
 -  </div>
 -  </div>
 -  </div>
 
当用户名和密码发生改变的时候,设置onChange事件,重新设置state里边username和password的值
-  this.state = {
 -  username: '',
 -  password: '',
 -  redirect: _mm.getUrlParam('redirect') || '/'
 -  }
 -  // 当用户名发生改变
 -  onInputChange(e){
 -  let inputValue = e.target.value,
 -  inputName = e.target.name;
 -  this.setState({
 -  [inputName] : inputValue
 -  });
 -  }
 
给输入框设置onKeyUp事件,监听输入框按下enter键的时候,提交登录数据
-  onInputKeyUp(e){
 -  if(e.keyCode === 13){
 -  this.onSubmit();
 -  }
 -  }
 
提交表单数据,提交之前先验证表单数据,
-  // 检查登录接口的数据是不是合法
 -  checkLoginInfo(loginInfo){
 -  let username = $.trim(loginInfo.username),
 -  password = $.trim(loginInfo.password);
 -  // 判断用户名为空
 -  if(typeof username !== 'string' || username.length ===0){
 -  return {
 -  status: false,
 -  msg: '用户名不能为空!'
 -  }
 -  }
 -  // 判断密码为空
 -  if(typeof password !== 'string' || password.length ===0){
 -  return {
 -  status: false,
 -  msg: '密码不能为空!'
 -  }
 -  }
 -  return {
 -  status : true,
 -  msg : '验证通过'
 -  }
 -  }
 
-  onSubmit(){
 -  let loginInfo = {
 -  username : this.state.username,
 -  password : this.state.password
 -  },
 -  //验证表单
 -  checkResult = _user.checkLoginInfo(loginInfo);
 -  // 验证通过
 -  if(checkResult.status){
 -  _user.login(loginInfo).then((res) => {
 -  _mm.setStorage('userInfo', res);
 -  //console.log(this.state.redirect);
 -  this.props.history.push(this.state.redirect);
 -  }, (errMsg) => {
 -  _mm.errorTips(errMsg);
 -  });
 -  }
 -  // 验证不通过
 -  else{
 -  _mm.errorTips(checkResult.msg);
 -  }
 -  }
 
登录之后跳转地址this.sate.redirect= _mm.getUrlParam('redirect') || '/' , this.props.history.push(this.state.redirect);
-  // 跳转登录
 -  doLogin(){
 -  //window.location.pathname url路径部分,端口后边,问号前边
 -  //例如 redirect="/user/index"
 -  window.location.href = '/login?redirect=' window.location.pathname;
 -  // window.location.href = '/login?redirect=' encodeURIComponent(window.location.pathname);
 -  }
 -  // 获取URL参数
 -  getUrlParam(name){
 -  //http://localhost:8086/login?redirect=/product/index
 -  // param=123¶m1=456
 -  let queryString = window.location.search.split('?')[1] || '',
 -  reg = new RegExp("(^|&)" name "=([^&]*)(&|$)"),
 -  result = queryString.match(reg);
 -  console.log(result);
 -  return result ? decodeURIComponent(result[2]) : null;
 -  }
 
更多专业前端知识,请上 【猿2048】www.mk2048.com