2016-07-23 100 views
0

我是React Native的新手,当我遇到此问题时正在使用Navigator播放。React Native- this.props在不同文件中的场景中为空

这是文件中的我的主类:CategoryScene,

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

出于某种原因,在

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场景。道具为空,所以我无法访问this.props.test。

我做错了什么?

+0

我厌倦了我机器中的完全相同的代码,它像一个魅力工作。你可以仔细检查它是否工作? –

+0

所以我发现这个问题,上面的代码显然没有提供足够的细节。失败的部分被forEach()块封装,出于某种原因(我不知道这是否由JS设计),**在ForEach中,范围更改为DedicatedWorkerGlobalScope而不是最内层的闭包**;因此,this.props变为空...感谢所有您的帮助。 –

+0

更新了原始发布。我发现**我使用var而不是let,导致forEach的范围被绑定到最外层对象**而不是最近的封闭对象......谢谢.. –

回答

0

我认为它需要使用passProps发送。

例如,

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

退房Navigating like a Pro

它帮了我很多在我的项目。

+0

从您提供的链接中: 'Many人们使用名字passProps,但这可以是任何你想要的名字。 passProps只是有意义,因为它实际上是传递属性。 ' –

+0

啊,我的错!感谢您的支持! –

相关问题