使用导航器推送新路由时出现问题



我对Navigator有奇怪的行为。第一次我会打电话给navigator.push(...),它有时会打印以下警告:

Warning: flattenChildren(...): two children with the same key, 'scene_1'. Child keys must be unique; when two children share a key, only the first child will be used.
  in RTCView (created by View)
  in View (created by Navigator)

或者,它将显示一个空白页。

但是,如果我再次弹出并推动,它将起作用...发生了什么事情?


编辑:

这是代码:

import Page1 from '../page/Page1';
import Page2 from '../page/Page2';
import Page3 from '../page/Page3';
const routes = [
    { index: 0, title: 'Page 1' , component: Page1 },
    { index: 1, title: 'Page 2', component: Page2 },
    { index: 2, title: 'Page 3', component: Page3 },
];
class MyApp extends Component {
    renderScene(route, navigator) {
        let Component = route.component ;
        if (route.component) {
            return (
                <Component navigator={ navigator } />
            );
        }
        return null;
    }
    render() {
        return (
            <Navigator
                initialRoute={ routes[0] }
                initialRouteStack={ routes }
                renderScene={ this.renderScene } 
            />
        );
    }
}

=> 我刚刚尝试从导航器中删除initialRouteStack道具,它似乎已经解决了我的问题。但是我不明白这个道具是做什么用的...

initialRouteStack 是你一开始就给导航器的堆栈。通常你只传递一个initialRoute,所以你的堆栈将从该路由开始。

但是你把所有的路由都传递到初始的RouteStack中,所以当你导航到另一个场景时,你基本上是把组件推到已经包含该组件的堆栈的末尾。希望这是有道理的并澄清事情。

相关内容

  • 没有找到相关文章

最新更新