2016-07-23 4 views
0

Ich bin ein Neuling zu Reagieren Native und spielte mit Navigator, wenn ich dieses Problem.React Native - this.props ist Null in einer Szene in einer anderen Datei

Das ist meine Hauptklasse in Datei A:

class SweetSpotClient_Proto extends Component { 
    render() { 
    return (
     <Navigator 
     initialRoute={{ test: CategoryScene }} 
     renderScene={this.renderScene.bind(this)}/> 
    ); 
    } 

    renderScene(route, navigator) { 
    return <CategoryScene test={route.test}/> 
    } 
} 

Und das ist meine Szene in Datei B:

export default class CategoryScene extends Component { 
    render() { 
    ... 
    var testArr = {... } ; 
     testArr.forEach(function(testEl) { 
    var test = this.props.test; 
    }); 
    } 
} 

Aus irgendeinem Grund in CategoryScene, dies. Requisiten ist Null so kann ich nicht auf this.props.test zugreifen.

Mache ich etwas falsch?

+0

Ich müde den exakt gleichen Code in meiner Maschine, es funktionierte wie ein Charme. Können Sie überprüfen, ob es funktioniert oder nicht? –

+0

So fand ich das Problem und mein Code oben war offenbar nicht genug Details geben. Der fehlerhafte Teil wurde von forEach() - Block umschlossen und aus irgendeinem Grund (ich weiß nicht, ob dies von JS geplant ist), ** innerhalb von ForEach wird der Bereich zu DedicatedWorkerGlobalScope statt der innersten Schließung geändert **; so, this.props wird null ... Vielen Dank für Ihre Hilfe .. –

+0

Aktualisiert den ursprünglichen Eintrag. Ich habe herausgefunden, dass ** ich var anstelle von let verwendet habe, was dazu führte, dass der Umfang von forEach an das äußerste Objekt gebunden wurde ** anstelle des nächsten umschließenden Objekts ... Danke. –

Antwort

0

Ich denke, es muss mit passProps gesendet werden.

Zum Beispiel

return <CategoryScene test={route.passProps}/>

Check-out Navigating like a Pro

Es hat mir sehr geholfen in meinem Projekt.

+0

Von dem angegebenen Link: 'Viele Leute benutzen den Namen passProps, aber das kann der Name sein, den du willst. passProps macht nur Sinn, da es tatsächlich Eigenschaften weitergibt. ' –

+0

Ahhh mein Fehler! danke für die heads-up! –

Verwandte Themen