2017-08-09 4 views
0

Ich habe ein Objekt vom Typ React.ReactNode, und ich möchte:React.ReactNode zu reagieren Element

1) Überprüfen Sie, ob es vom Typ React.ReactElement ist

2) Wenn ja, habe ich dann will ein ReactElement Objekt gleich den Knoten

für 1 Teil zu schaffen, ich bin mit React.isValidElement (nicht sicher, falls erforderlich)

für Teil 2, sie ist nicht sicher, wie bei allen

zu tun

Am Ende muss ich prüfen können, ob eine bestimmte Klasse innerhalb des Knotens enthalten ist, wenn es ein Element ist, wenn das hilfreich ist. Ich nehme an, dass ich das ReactElement-Objekt erstellen muss, um dies zu tun, aber wenn nicht, ist das auch okay.

Antwort

0

Zuerst verwenden Sie TypeScript (zumindest sieht es so aus mit den Tags) - also müssten Sie im Idealfall nicht einmal eine Laufzeitprüfung für den Objekttyp durchführen, Sie können es tun Kompilierung

interface PropTypes { 
    something: React.ReactElement<...> 
} 

const M = ({ something }: PropTypes) => { 

} 

Zweitens, um einen ReactElement daraus zu erstellen, können Sie React.cloneElement(...)

const cElement = React.cloneElement(something, something.props, [...children]) 
+0

das funktioniert nicht mit dem Typ React.ReactNode leider – csiscs

+0

hm, interessant verwenden - was 'Reagieren .createElement'? –

Verwandte Themen