试图找出为什么Navigator会在其堆栈中显示所有的路由,这让我有一段时间感到困惑了。
最初
<Navigator initialRoute={{name:"Route 1", index: 1}} />然后,在发出一个navigator.push({ name : "Route 2", index: 2 })后,我的组件的render()方法将被调用,即重新呈现Navigator,然后再调用renderScene。
在推送第二条路由并在renderScene被调用时记录该路由后,产生的结果如下:
呈现()-> renderScene(),{name:“路由1",索引: 1} 呈现()-> renderScene(),{name:“路由2",索引: 2}
有人知道为什么renderScene()被调用的次数与导航器堆栈中的路由一样多吗?这是预期的行为吗?如果是的话,我们如何加快渲染速度?
在最后为最后一次推送路由呈现场景之前,尝试呈现5条路由的场景时,性能会受到重大影响,而在实际情况下,它应该只为最后一次推送路由的场景调用render()一次。
任何帮助都是非常感谢的。谢谢!
以下是相关的片段:
nav.js
export function ListPage(){
return {
name: LIST_PAGE,
index: 1
}
}
Main App
<Navigator
ref={(ref) => this.navigator = navigator = ref}
initialRoute={nav.ListPage()}
renderScene={(route,navigator)=>this.renderListingsScene(route,navigator)}
/>
renderListingsScene(route, navigator){
console.log("renderScene()", route);
}发布于 2016-12-04 02:05:39
我也遇到了类似的问题(它调用了我在启动时定义的所有路线)。一旦我将initialRouteStack从Navigator属性中删除,它就不再发生了。
<Navigator
initialRoute={routes[0]}
//initialRouteStack={routes}
renderScene={ (route, navigator) => this._renderScene(route, navigator) }
/>发布于 2016-09-19 00:32:19
renderListingsScene必须返回一个JSX代码。必须返回<View>或renderScene中的其他组件。我认为它重新呈现每一个场景,因为你没有提供任何组件作为返回值。
https://stackoverflow.com/questions/39538891
复制相似问题