2016-08-10 1 views
-1

Ich habe diesen CodeWie Name Funktion (ES 6) aufgerufen wird?

import React from 'react'; 

import 'materialize-css/sass/materialize.scss'; 
import 'materialize-css/js/materialize.js'; 
import 'font-awesome/scss/font-awesome.scss'; 
import '../styles/main.scss'; 

export default class AddStorageModal extends React.Component { 
    constructor() { 
     super(); 
     this.state = { storageName: "", sharingKey: "" } 
    } 
    handleChange(e) { 
     this.setState({ [e.target.name]: e.target.value }); 
    } 
    validate() { 
     if (this.state.storageName === "" && this.state.sharingKey == "") { 
      console.log("validation error"); 
      return false; 
     } 
     this.props.createNewStorage(this.state); 
    } 
    resetForm() { 
     this.state = { storageName: "", sharingKey: "" } 
     $(function() { 
      Materialize.updateTextFields(); 
     }); 
    } 
    render() { 
     if (this.props.storages.openAddStorageModal) { 
      $('#add-new-storage-modal').openModal({ dismissible: false }); 
     } 
     else { 
      $('#add-new-storage-modal').closeModal(); 
      ****resetForm();***** 
     } 
     return (
      <div id="add-new-storage-modal" className="modal" > 
       <div className="modal-content"> 
        <h6>Enter your new Storage (Freezer, Pantry, etc.) </h6> 
        <div className="row"> 
         <form> 
          <div className="input-field col s12 m12 l12 "> 
           <input id="storage_name" type="text" value={this.state.storageName} name="storageName" onChange={this.handleChange.bind(this) } /> 
           <label htmlFor="storage_name">Storage Name</label> 
          </div> 
          <br /> 
          <h4 className="center">OR</h4> 
          <h6>Enter in the sharing key you were given.</h6> 
          <div className="input-field col s12 m12 l12 "> 
           <input id="sharing_key" type="text" value={this.state.sharingKey} name="sharingKey" onChange={this.handleChange.bind(this) } /> 
           <label htmlFor="sharing_key">Sharking Key</label> 
          </div> 
         </form> 
        </div> 
       </div> 
       <div className="modal-footer"> 
        <a href="#!" className="waves-effect waves-green btn-flat left" onClick={() => this.validate() }>Add</a> 
        <a href="#!" className="waves-effect waves-green btn-flat" onClick={() => this.props.loadAddStorageModal(false) }>Cancel</a> 
       </div> 
      </div> 
     ) 
    } 
} 

ich diesen Fehler

AddStorageModal.js:35Uncaught ReferenceError: resetForm is not defined 

Wie rufe ich resetform()? Ich rufe gerade jetzt im "else" an (einfach nach den Sternen suchen)

+1

Also, wo nennst du es? – zerkms

+3

Btw, 'this.state = {storageName:" ", sharingKey:" "}' --- Sie sind ** NICHT ** angewiesen, 'this.state' manuell zuzuweisen, sondern nur' this.setState() ' . – zerkms

+0

Oder Sie sagen uns, dass Sie resetForm anrufen oder es unmöglich für uns ist, Ihnen zu helfen. (etwas sagt mir, dass es von jQuery ist .. Ich hoffe, ich bin falsch) –

Antwort

1

Sie haben die diese vergessen.

es sein sollte:

if (this.props.storages.openAddStorageModal) { 
    $('#add-new-storage-modal').openModal({ dismissible: false }); 
} 
else { 
    $('#add-new-storage-modal').closeModal(); 
    this.resetForm(); 
} 
+0

toll das hat funktioniert. Jetzt versuche ich nur den "setState" zu finden, um ein Problem zu bekommen. – chobo2

+0

ah, ich muss es binden. Was ist besser zu schreiben() => this.resetForm(); oder this.resetForm.bind (this); – chobo2

+0

Ich bin mir nicht sicher, ob ich ein neues Ticket erstellen muss, aber this.resetForm.bind (this) funktioniert nicht mehr. Ich beobachte es über den Debugger, es ruft die Methode nicht mehr auf, aber auch keinen Fehler. – chobo2

Verwandte Themen