2017-06-03 20 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

是的,我很快就寫了它,並沒有對其進行測試。很高興你解決了你的問題。 :) –

相關問題