我对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中,所以当你导航到另一个场景时,你基本上是把组件推到已经包含该组件的堆栈的末尾。希望这是有道理的并澄清事情。