2016-08-11 3 views
1

안녕하세요, 저는 반응이 매우 새로 워서이 오류를 제거하려고하지만 아무 것도 작동하지 않습니다.getInitialState는 일반 JavaScript 클래스 인 Loginpanel (// 내 구성 요소 이름)에 정의되어 있습니다.

도와주세요. 내 구성 요소는 다음과 같습니다.

"getInitialState는 일반 JavaScript 클래스 인 Loginpanel에 정의되었습니다.이 클래스는 React.createClass를 사용하여 만든 클래스에서만 지원됩니다. 대신 상태 속성을 정의 하시겠습니까?" 더 이상 getInitialState를 사용하지 않는 ES6 클래스에서

export default withRouter(class Loginpanel extends React.Component{ 

constructor(props) { 
    super(props); 
    this.state= { 
     datas1: [], 
     NotWorking: "UserName OR Password is Wrong", 
     // comments: AppStore.getAll(), 
    }; 
} 

getStateFromStore() { 
    return { 
     comments: AppStore.getAll() 
    } 
} 


componentWillMount() { 



    firebase.database().ref("UserPassworddata/").once("value", (snapshot) => { 

     var datas1 = [] 
     snapshot.forEach((data1) => 
     { 

      datas1.push({ 

       username: data1.val().Username, 
       password: data1.val().Password, 

      }); 

     }); 

     this.setState ({ 
      datas1: datas1, 
     }); 

    }); 
} 





onChange() { 
    this.setState(comments); 
} 

getInitialState() { 
    return comments; 
} 

componentDidMount() { 
    AppStore.addChangeListener(this.onChange.bind(this)); 
    console.log(AppStore.addChangeListener(this.onChange.bind(this))); 
} 

componentWillUnmount() { 
    AppStore.removeChangeListener(this.onChange.bind(this)); 
    console.log(AppStore.removeChangeListener(this.onChange.bind(this))); 
} 

checkCred(){ 

    //AppActions.addItem('Yes this is done by me'); 
    var details_array = this.state.datas1 ; 
    console.log(details_array); 
    for(var i=0; i < details_array.length; i++){ 
     var currentObject = details_array[i]; 
     if (this.email.value == currentObject.username && this.password.value == currentObject.password){ 
      console.log('yes done it'); 


      this.props.router.push('Index'); 
      AppActions.createComment(currentObject.username,currentObject.password); 

      var dis = this.state.comments 
      console.log(dis); 

     } 
     else{ 

      console.log('sorry man not working'); 
     } 
    } 
} 

render() { 

    return (
     <div> 

      <Link to="/"> <button className="button1" bsStyle="primary" bsSize="large"> Login </button></Link> 
      <Link to="Signup"> <button className="button1" bsStyle="primary" bsSize="large"> Signup </button></Link> 



      <div id="Login"> 
      Email: 
       <input ref={(e) => this.email = e} className="form-fields" name="email" required="required" type="email" placeholder="User Name" /><br/> 
      Password: 

       <input ref={(f) => this.password = f} className="form-fields" name="password" required="required" type="password" placeholder="Password" /><br/> 
      <button onClick={this.checkCred.bind(this)} className="button1" bsStyle="primary" bsSize="large" > Submit </button> 




      </div> 
      </div> 
     ) 
     } 
    }) 

답변

1

대신 당신은

this.state = { 
    comments: [] 
} 

당신은 거의 그것을했다 당신의 생성자에서 다음을 사용! getInitialState 블록을 제거하고 생성자의 "comments"필드의 주석 처리를 제거하면됩니다.

+0

ahhh okay man .... thanks buddy. –

+0

당신은 문제 해결에 대한 나의 자신감을 높여줍니다. 내 마음으로 감사합니다. –

+0

의견을 사용하기를 좋아합니다. []이 물건 ... –