Die rechte Seite von 'instanceof' ist nicht aufrufbar

8

Ich folge diesem Tutorial um "zu erkennen" wenn Eine eindeutige Nummer befindet sich in einem Array-Objekt. Diese Nummer ist eine Zeichenkette.

Ich bin in Ruby on Rails an detect gewöhnt, also suche ich nach dem Äquivalent in React (JavaScript):

ES6:

%Vor%

In Wirklichkeit sieht das so aus: this.renderCreditNote(this.state.num).bind(this)

Wenn also num im Array ist, zeige nur dieses Array an. Mache ich das richtig? Der Fehler ist:

  

Uncaught TypeError: Die rechte Seite von 'instanceof' ist nicht aufrufbar

    
Sylar 09.09.2016, 19:54
quelle

2 Antworten

1

Sie sollten eine Funktion an die Instanz in der rechten Seite übergeben. Probieren und machen Sie this.props.data.constructor

    
Kafo 09.09.2016 19:59
quelle
0

Ich kenne Ruby nicht, aber basierend auf der Beschreibung von detect scheint es, dass Sie nach array.find in JavaScript. .find iteriert über ein Array - wenn es das Objekt findet, nach dem Sie suchen, gibt es es zurück und hört auf zu iterieren, wenn es nichts findet undefined wird zurückgegeben.

Also zum Beispiel:

%Vor%

Hier ist eine Geige: Ссылка

Einige ES6-Verschönerung:

%Vor%

Beachten Sie, dass dies in etwas älteren Browsern nicht vollständig unterstützt wird, ich weiß aus Erfahrung, IE11 hat es nicht. Aber es ist definitiv die Polyfill wert.

Über den Blog, den Sie verlinkt haben - ohne in die prototypische Vererbung zu gehen, gibt instanceof im Grunde wahr / falsch zurück, wenn die Eingabe der Datenstruktur entspricht. In dem Blog, den Sie verlinkt haben, erkennen sie, ob die Eingabe ein Objekt oder ein Array ist - aber nur, damit sie abhängig von dieser Eingabe verschiedene Aktionen ausführen können. Wenn es sich um ein Objekt handelt, geben sie einfach das Feld für dieses Objekt zurück, wenn es ein Array ist, durchlaufen sie das Array mit .map und geben alle Namen dieser Objekte in diesem Array zurück.

Bearbeiten, um die Rendermethode zu überprüfen:

%Vor%     
erik-sn 09.09.2016 20:38
quelle

Tags und Links