2017-06-07 11 views
1

"create-react-app"コマンドとその実行中の罰金を使用して反応をインストールしました。同じページにログインして登録しようとしています。登録フォームと関連するすべてのメソッドを持つLoginregistration.jsという名前のコンポーネントファイルが1つあります。react.jsの同じページでの2つのフォームのエラーメッセージ処理

In LoginRegistration.js私はすべてのログインに関連するHTMLとそれぞれの送信機能を持つ "Login.js"をインポートしています。

htmlプレゼンテーションでは、そのプレゼンテーションには、それぞれのAPI「register/login」を呼び出す両方のフォームが表示されます。

しかし、返信応答コードごとに両方のフォームに関連するエラーメッセージをマップしています。しかし、LoginRegister.jsにLogin.jsをインポートすると、LoginRegister.jsおよびそれぞれの場所ごとにメッセージが表示されます。

私が間違っていることを教えてください。ここでは両方のファイルのコードがある -

LoginRegister.jsは

import React from 'react'; 
import DefaultLayout from '../Layout/DefaultLayout'; 
import { connect } from 'react-redux'; 
import { userSignupRequest } from '../actions/signupActions'; 
import { bindActionCreators } from 'redux'; 
import Login from './Login'; 


class LoginRegister extends React.Component { 
    constructor(props) { 
     super(props); 
     document.title = "Login-Register"; 
     this.errorMapping = {"101": "Unexpected error occurred. Please try again later.", 
    "102": "This email is already connected to a account.", 
    "103": "First name cannot be empty", 
    "104": "Incorrect first name", 
    "105": "Last Name cannot be empty", 
    "106": "Incorrect last name", 
    "107": "Email cannot be empty", 
    "108": "Incorrect email address", 
    "109": "Password cannot be empty", 
    "110": "password minimum length is 6 characters", 
    "111": "password maximum length is 50 characters", 
    "112": "Confirm password does not match", 
    "113": "Phone no can not be empty", 
    "114": "Incorrect user role" 
} 

     this.state = {first_name: '',last_name: '',email:'',password:'',c_password:'', phone_no:'',user_role:2, errmsg:''}; 

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


    handleInputChange(event) { 
     this.setState({ [event.target.name]: event.target.value}); 
     } 

    handleSubmit(event) { 
     event.preventDefault(); 
     this.props.userSignupRequest(this.state); 
    } 


    render(){ 
     console.log(this.props.registerMessage); 
     return (
      <DefaultLayout> 
       <section id="page-title"> 

        <div className="container clearfix"> 
         <h1>My Account</h1> 
         <ol className="breadcrumb"> 
          <li><a href="/">Home</a></li> 
          <li><a href="/Customer-list">Customer list</a></li> 
          <li className="active">Login</li> 
         </ol> 
        </div> 

       </section> 

       <section id="content"> 

        <div className="content-wrap"> 

         <div className="container clearfix"> 

          <div className="col_one_third nobottommargin"> 
           <Login /> 
          </div> 

          <div className="col_two_third col_last nobottommargin"> 


           <h3>Don't have an Account? Register Now.</h3> 

           <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Unde, vel odio non dicta provident sint ex autem mollitia dolorem illum repellat ipsum aliquid illo similique sapiente fugiat minus ratione.</p> 
           <p id="msg">{this.state.registerMessage}</p> 
           <div>{this.props.registerMessage && this.props.registerMessage.status.map((msg, idx) => { 
             if(msg === 100) { return <span key={idx} id="succ_msg">{this.errorMapping[msg]}</span> 
             } else { 
               return <span key={idx} id="err_msg">{this.errorMapping[msg]}</span> 
             } 
            }) 
           }</div> 

           <form id="register-form" name="register-form" className="nobottommargin" method="post" onSubmit={this.handleSubmit}> 

            <div className="col_half"> 
             <label htmlFor="register-form-name">First Name:</label> 
             <input type="text" id="register-form-firstname" name="first_name" value={this.state.first_name} className="form-control" onChange={this.handleInputChange} /> 
            </div> 

            <div className="col_half col_last"> 
             <label htmlFor="register-form-email">Last name:</label> 
             <input type="text" id="register-form-lastname" name="last_name" value={this.state.last_name} className="form-control" onChange={this.handleInputChange} required={true} /> 
            </div> 

            <div className="clear"></div> 

            <div className="col_half"> 
             <label htmlFor="register-form-email">Email Address:</label> 
             <input type="text" id="register-form-email" name="email" value={this.state.email} className="form-control" onChange={this.handleInputChange} required={true} /> 
            </div> 

            <div className="col_half col_last"> 
             <label htmlFor="register-form-repassword">Phone no.:</label> 
             <input type="text" id="register-form-phone" name="phone_no" value={this.state.phone_no} className="form-control" onChange={this.handleInputChange} /> 
            </div> 

            <div className="clear"></div> 

            <div className="col_half"> 
             <label htmlFor="register-form-password">Choose Password:</label> 
             <input type="password" id="register-form-password" name="password" value={this.state.password} className="form-control" onChange={this.handleInputChange} /> 
            </div> 


            <div className="col_half col_last"> 
             <label htmlFor="register-form-repassword">Re-enter Password:</label> 
             <input type="password" id="register-form-repassword" name="c_password" value={this.state.c_password} className="form-control" onChange={this.handleInputChange} /> 
            </div> 
            <input type="hidden" name="user_role" value={this.state.user_role} className="form-control" /> 
            <div className="clear"></div> 

            <div className="col_full nobottommargin"> 
             <button className="button button-3d button-black nomargin" id="reg-submit" name="register-form-submit" value="register">Register Now</button> 
            </div> 

           </form> 

          </div> 

         </div> 

        </div> 
       </section> 

      </DefaultLayout> 
     ) 
    } 
} 


function mapStateToProps(state){ 
    console.log("View data :"+JSON.stringify(state.data)); 
    return { 
     registerMessage: state.data 
    } 
} 
function mapDispatchToProps(dispatch) { 
     return bindActionCreators({userSignupRequest: userSignupRequest}, dispatch) 
} 
export default connect(mapStateToProps, mapDispatchToProps) (LoginRegister); 

を>>>>>そしてLogin.jsは>>>>>>あなたは成分も同じように使用してログイン

import React from 'react'; 
import { connect } from 'react-redux'; 
import { userSignInRequest } from '../actions/signupActions'; 
import { bindActionCreators } from 'redux'; 



class Login extends React.Component { 
    constructor(props) { 
     super(props); 
     this.login_errorMapping = { "101": "Unexpected error occurred, Please try again later", 
    "102": "Incorrect email or password.", 
    "103": "Email cannot be empty", 
    "104": "incorrect email address", 
    "105": "Password cannot be empty", 
    "106": "Your account is deactivated"} 
     this.state = {email:'',password:''}; 

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


    handleInputChange(event) { 
     this.setState({ [event.target.name]: event.target.value}); 
     } 

    handleSubmit(event) { 
     event.preventDefault(); 
     this.props.userSignInRequest(this.state); 
    } 

    render(){ 
     console.log(this.props.loginMessage); 

     return (
      <div className="well well-lg nobottommargin"> 
       <form id="login-form" name="login-form" className="nobottommargin" action="#" method="post" onSubmit={this.handleSubmit}> 

        <h3>Login to your Account</h3> 
        <div>{this.props.loginMessage && this.props.loginMessage.status.map((msg, idx) => { 
          return <span key={idx} id="err_msg">{this.login_errorMapping[msg]}</span> 
         }) 
        }</div> 
        <div className="col_full"> 
         <label htmlFor="login-form-username">Email:</label > 
         <input type="text" id="login-form-username" name="email" value={this.state.email} className="form-control" onChange={this.handleInputChange} /> 
        </div> 

        <div className="col_full"> 
         <label htmlFor="login-form-password">Password:</label> 
         <input type="password" id="login-form-password" name="password" value={this.state.first_name} className="form-control" onChange={this.handleInputChange} /> 
        </div> 

        <div className="col_full nobottommargin"> 
         <button className="button button-3d nomargin" id="login-form-submit" name="login-form-submit" value="login">Login</button> 
         <a href="#" className="fright">Forgot Password?</a> 
        </div> 

       </form> 
      </div> 
     ); 
    } 
} 

function mapStateToProps(state){ 
    console.log("View Login data :"+JSON.stringify(state.data)); 
    return { 
     loginMessage: state.data 
    } 
} 
function mapDispatchToProps(dispatch) { 
     return bindActionCreators({userSignInRequest: userSignInRequest}, dispatch) 
} 
export default connect(mapStateToProps, mapDispatchToProps) (Login); 
+0

'

{this.props.registerMessage && this.props.registerMessage.status.map((msg, idx) => { return {this.errorMapping[msg]} }) }
は' 'this.props.loginMessage'を使用して' this.props.loginMessage' –

+0

はいLogin.jsを使用する必要があり、plzはLogin.jsの戻りセクションを確認してください。 – Atul

+0

私はあなたの質問をあなたはまだregisterMessageを使用していますが、loginMessageではなくログインコンポーネントをチェックします。 –

答えて

1

ですエラーメッセージはレジスタコンポーネントのために設定され、したがって問題が発生します。あなたは、いくつかの変更を加える必要が

あなた減速で、RegisterDataLoginDataloginregisterメッセージを分離してからであることをLogin.jsLoginRegister.jsmapStateToPropsを変更

function mapStateToProps(state){ 
    console.log("View Login data :"+JSON.stringify(state.data)); 
    return { 
     loginMessage: state.LoginData 
    } 
} 

および

function mapStateToProps(state){ 
    console.log("View Login data :"+JSON.stringify(state.data)); 
    return { 
     registerMessage: state.RegisterData 
    } 
} 

それぞれ

Login.jsで
関連する問題