Meteor Session落后一步

时间:2017-05-18 14:50:11

标签: reactjs session meteor react-bootstrap react-fiber

我正在尝试检查用户集合中是否存在用户名。在检查数据的实例中,函数运行速度比调用方法快(众所周知)。这个结果使Session成为用户后退一步正在检查用户名的可用性。

我很长时间都坚持这些,如果你有一个解决方法,我会非常感激。

以下是代码:

const ChooseUsername = React.createClass({


  getInitialState() {
    return {
      value: ''
    };
  },
  
  getValidationState() {
    const value = this.state.value;
    Meteor.call("userExists", value, (err, userExists) =>{
                if (err){
                return err;
                }
                else{
                return Session.set('result',userExists)
            }
        }) 
                 if(Session.get('result'))
                 return "error";
                 else return 'success';
  },
  
  handleChange(e) {
    this.setState({ value: e.target.value });
  },

  render() {
      
    return (<div id="signInPage">
                    <div id="tutorial">
                        <h4>Please Choose a Username</h4>
                         <form>
                            <FormGroup
                            controlId="formBasicText"
                            validationState={this.getValidationState()}
                            >
                            <FormControl
                                type="text"
                                value={this.state.value}
                                placeholder="Type your username"
                                onChange={this.handleChange}
                            />
                            <FormControl.Feedback />
                            <HelpBlock>You can't change your username later</HelpBlock>
                            </FormGroup>
                        </form>
                        <p><a className="btn btn-success signupButtons" href="/" role="button">See tutorial</a></p>
                   </div></div>);
  }
});

export default ChooseUsername;

编辑:

只需使用以下代码更改getValidationState(),它就像魅力一样。

getValidationState() {
    const value = this.state.value;
    Meteor.call("userExists", value, (err, userExists) =>{
                if (err){
                return err;
                }
                else{
                return this.setState({userIsThere:userExists})
            }
        })
    const userIsThere = this.state.userIsThere 
                 if(userIsThere)
                 return "error";
                 else return 'success';
  },

0 个答案:

没有答案