2016-12-21 2 views
0

Ich habe eine Benachrichtigungsklasse, die Benachrichtigungsnachricht sollte von außerhalb gesetzt werden. Jetzt ist zu beachten, dass this.setState nicht definiert ist. Wie kann ich das beheben?Wie kann ich den Status in einer statischen Reaktionsfunktion einstellen?

Reagieren:

const Notification = React.createClass({ 

    statics: { 
    createAlert: function(message) { 
     this.setState({message: message}); 
    } 
    }, 

    getInitialState: function() { 
    return { 
     message: '', 
    }; 
    }, 
+0

Wie rufen Sie diese Methode? Es ist wahrscheinlich, dass das "Dies" etwas anderes ist als das, was Sie erwarten. – putvande

+0

Ich rufe es aus einer anderen Reaktionsklasse. Ich möchte das "Dies" der Benachrichtigungsklasse adressieren – vuvu

+1

Ich denke, das ist ein Antipattern. Ich denke du willst eine "Stütze" setzen? – putvande

Antwort

1

Statiken keine Instanzen haben. Das ist der springende Punkt der Statik, d. H. Sie werden zwischen Klassen aufgeteilt, so dass ein this Kontext nicht funktioniert. Sie sollten das nicht mit Statik machen. Ich benutze nur ES6-Syntax, so dass dies syntaktisch falsch sein könnte.

const Notification = React.createClass({ 
    setMessage: function(message) { 
     this.setState({message: message}); 
    } 
    getInitialState: function() { 
     return { 
      message: '', 
     }; 
    } 
    render: function() { 
     return (
      //Pass the setMessage function as a prop to a child class 
      //You will need to .bind() setMessage somewhere 
      <ChildClass setMessage={this.setMessage} /> 
     ) 
    } 
}); 

const ChildClass = React.createClass({ 

    doSomething: function() { 
     this.props.setMessage("Hello"); 
    } 
    render: function() { 
     return (

     ) 
    } 
}); 

Wenn das Kind Klasse verschachtelt mehrere Ebenen verwenden tief dann einen Zustand Management wie redux, Fluss oder Sie können Reagieren Kontext verwenden.

Verwandte Themen