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被调用时记录路由后,得到:
有没有人知道为什么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中的另一个组件.我认为它会重新渲染每个场景,因为您没有提供任何组件作为返回值.
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |