2017-06-03 19 views
0

我看着一些类似的问题,并添加.value。但总是得到错误:options.password must be a string,即使我投了password.value.toString()。账户基地:options.password必须是一个字符串

import React, {Component} from 'react'; 
import ReactDom from 'react-dom'; 
import { Accounts } from 'meteor/accounts-base'; 

class Register extends Component { 

    constructor(props) { 
    super(props); 
    this.handleSubmit = this.handleSubmit.bind(this); 
    } 

    handleSubmit (event){ 
    event.preventDefault(); 
    console.log(this.email.value); 
    console.log(this.password.value); 
    const res = Accounts.createUser(this.email.value, this.password.value.toString()); 
    console.log(res); 
    } 

    render() { 
    return (
     <form onSubmit={this.handleSubmit}> 
     <div className="form-group"> 
      <label htmlFor="email">Email:</label> 
      <input className="form-control" type="email" ref={(email) => this.email = email}/> 
     </div> 
     <div className="form-group"> 
      <label htmlFor="password">Password:</label> 
      <input className="form-control" type="password" ref={(password) => this.password = password}/> 
     </div> 
     <div className="form-group"> 
      <button type="submit" className="btn btn-primary">Submit</button> 
     </div> 
     </form> 
    ); 
    } 
} 

export default Register; 
+0

这看起来像与服务器上的逻辑有关的错误。你怎么得到'console.log(this.password.value);'? – Panther

+0

我可以得到正确的密码值,如果我使用typeof,它也是字符串 – Han

回答

1

你需要传递一个对象,而不是2字符串参数:

const res = Accounts.createUser({ 
    email: this.email.value, 
    password: this.password.value, 
}); 

编辑: 关于你的阵营组件,使用状态和controlled components比裁判一个更好的做法:

import React, {Component} from 'react'; 
import ReactDom from 'react-dom'; 
import { Accounts } from 'meteor/accounts-base'; 

class Register extends Component { 

    constructor(props) { 
    super(props); 
    this.state = { 
     email: '', 
     password: '', 
    } 

    this.handleSubmit = this.handleSubmit.bind(this); 
    } 

    handleInputChange(event) { 
     const target = event.target; 
     const name = target.name; 

     this.setState({ 
     [name]: value, 
     }); 
    } 

    handleSubmit (event){ 
    event.preventDefault(); 
    const res = Accounts.createUser({ 
     email: this.state.email, 
     password: this.state.password, 
    }); 
    } 

    render() { 
    return (
     <form onSubmit={this.handleSubmit}> 
     <div className="form-group"> 
      <label htmlFor="email">Email:</label> 
      <input className="form-control" type="email" name="email" onChange={this.handleInputChange} /> 
     </div> 
     <div className="form-group"> 
      <label htmlFor="password">Password:</label> 
      <input className="form-control" type="password" name="password" onChange={this.handleInputChange} /> 
     </div> 
     <div className="form-group"> 
      <button type="submit" className="btn btn-primary">Submit</button> 
     </div> 
     </form> 
    ); 
    } 
} 
+0

非常感谢! – Han

+0

BTW,你忘了绑定handleInputChange功能和this.setState应该是'[名]:target.value,' – Han

+0

是的,我很快就写了它,并没有对其进行测试。很高兴你解决了你的问题。 :) –

相关问题