2016-07-23 6 views
0

React Nativeの初心者です。この問題を遭遇したときにNavigatorで遊んでいました。React Native- this.propsは、別のファイルのシーンでnullです。

これは、ファイル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}/> 
    } 
} 

そして、これは、ファイルBの私のシーンです:

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

何らかの理由で、CategorySceneこれで。小道具はnullなのでthis.props.testにアクセスすることはできません。

何か間違っていますか?

+0

私のマシンでは全く同じコードが疲れましたが、それは魅力的でした。それが働いているかどうかを再確認できますか? –

+0

私は上記の問題を発見し、上記のコードは明らかに十分な詳細を与えていませんでした。障害のある部分はforEach()ブロックで囲まれていましたが、ForEach内で**何らかの理由で(これがJSの設計であるかどうかわかりません)、スコープは最も内側のクロージャ**ではなくDedicatedWorkerGlobalScopeに変更されました。したがって、this.propsはnullになります...あなたの助けをありがとう。 –

+0

元の投稿を更新しました。私はそれを知った**私は代わりに最も近い囲むオブジェクトの代わりに**最も外側のオブジェクト**にバインドされてforEachの範囲を引き起こすletの代わりにvarを使用していた... –

答えて

0

passPropsを使用して送信する必要があると思います。

例えば、

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

Navigating like a Pro

をチェックアウトそれは私のプロジェクトで私をたくさん助けました。

+0

あなたが提供したリンクから: '多くの人々はpassPropsという名前を使用しますが、これは任意の名前にすることができます。 passPropsは実際にプロパティを渡すだけの意味があります。 ' –

+0

ああ私の間違い!ヘッドアップをありがとう! –

関連する問題