首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >多次响应本机导航器renderScene

多次响应本机导航器renderScene
EN

Stack Overflow用户
提问于 2016-09-16 19:31:28
回答 2查看 1.7K关注 0票数 5

试图找出为什么Navigator会在其堆栈中显示所有的路由,这让我有一段时间感到困惑了。

最初

代码语言:javascript
复制
<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()一次。

任何帮助都是非常感谢的。谢谢!

以下是相关的片段:

代码语言:javascript
复制
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);

}
EN

回答 2

Stack Overflow用户

发布于 2016-12-04 02:05:39

我也遇到了类似的问题(它调用了我在启动时定义的所有路线)。一旦我将initialRouteStackNavigator属性中删除,它就不再发生了。

代码语言:javascript
复制
<Navigator
          initialRoute={routes[0]}
          //initialRouteStack={routes}
          renderScene={ (route, navigator) => this._renderScene(route, navigator) }
/>
票数 1
EN

Stack Overflow用户

发布于 2016-09-19 00:32:19

renderListingsScene必须返回一个JSX代码。必须返回<View>renderScene中的其他组件。我认为它重新呈现每一个场景,因为你没有提供任何组件作为返回值。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39538891

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档