加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

react-native – 多次调用React Native Navigator renderScene

发布时间:2020-12-15 20:19:23 所属栏目:百科 来源:网络整理
导读:我已经被RN Navigator弄了一段时间,试图弄清楚为什么Navigator会渲染其堆栈中推送的所有路由. 原来 Navigator initialRoute={{name:"Route 1",index: 1}} / 然后在发出navigator.push({name:“Route 2”,index:2})时,我的组件的render()方法被调用,它重新
我已经被RN Navigator弄了一段时间,试图弄清楚为什么Navigator会渲染其堆栈中推送的所有路由.

原来

<Navigator initialRoute={{name:"Route 1",index: 1}} />

然后在发出navigator.push({name:“Route 2”,index:2})时,我的组件的render()方法被调用,它重新渲染Navigator,后者又调用renderScene.

在推送第二个路径并在renderScene被调用时记录路由后,得到:

Render() –> renderScene(),
{name:”Route 1″,index: 1}

Render() –> renderScene(),
{name:”Route 2″,index: 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);

}

解决方法

renderListingsScene必须返回JSX代码.您必须返回< View>或者renderScene中的另一个组件.我认为它会重新渲染每个场景,因为您没有提供任何组件作为返回值.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读