Reagieren setState zwischen den Komponenten ES6

Habe ich eine sehr einfache Anwendung, wo ich bin versucht, zu aktualisieren, den Status einer übergeordneten Komponente aus einer Kind-Komponente wie folgt:

import React from '../../../../../../../dependencies/node_modules/react';
import ReactDOM from '../../../../../../../dependencies/node_modules/react-dom';

class CalendarMain extends React.Component {
    constructor() {
        super();
    }

    handleClick() {
        this.props.handleStateClick("State Changed");
    }

    render() {
        return ( 
            <div>
                <div className="calendar">
                    {this.props.checkIn}
                    <button onClick={ this.handleClick.bind(this) }>Click Me</button>
                </div>
            </div>
        )
    }
}

class CalendarApp extends React.Component {

    constructor() {
        super();

        this.state = { 
            checkIn: "Check-in",
            checkOut: "Check-out",
            dateSelected: false 
        };
    }

    handleStateClick( newState ) {
        this.setState({
            checkIn: newState
        });
    }

    render() {

        return (
            <div>
                <CalendarMain 
                    checkIn = { this.state.checkIn }
                    handleStateClick = { this.handleStateClick.bind(this) }
                />
            </div>
        );
    }
}

Die Fehler ich erhalte, ist this.setState is not a function und ich kann nicht herausfinden, warum. Jede Hilfe wäre sehr geschätzt werden!

  • Stellen Sie sicher, dass Sie nicht versehentlich mutiertthis.setState anderswo. ie: this.setState = { foo: 'bar' };
  • Nur bemerken die ../../..... stellen Sie sicher, dass der relative Pfad bleibt in Ihrem Projekt, ansonsten verschieben des Projekts (Upload auf remote, die Veröffentlichung auf github / npm, was auch immer) brechen könnte diese Pfade.
  • Möchten Sie vielleicht überdenken Sie Ihre Projekt-Hierarchie
  • Die Art und Weise, die Sie importieren, Reagieren, ist sehr... enttäuschend.
  • Es funktioniert tatsächlich mit der neuesten version von React: jsfiddle.net/1uh9e8wx
InformationsquelleAutor Tom Pinchen | 2016-06-13
Schreibe einen Kommentar