2016-10-20 41 views
1

我得到以下每次我在抽屜裏打同一項目兩次時間警告:警告:flattenChildren(...)有反應,本地導航和DrawerLayoutAndroid

Warning: flattenChildren(...): Encountered 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. 

這裏是我的代碼:

import React from 'react'; 
import { 
    View, Navigator,DrawerLayoutAndroid, Text, TouchableHighlight 
} from 'react-native'; 

const ROUTES = [ { name: 'Main' } ]; 

export default class App extends React.Component { 
    render() { 
     return (
      <View style={{ flex: 1 }}> 
       <DrawerLayoutAndroid 
        ref="drawer" 
        drawerWidth={300} 
        renderNavigationView={() => (
         <View> 
          <TouchableHighlight 
           key={ROUTES[0].name} 
           onPress={() => this.refs.navigator.push(ROUTES[0])} 
          > 
           <Text>{ROUTES[0].name}</Text> 
          </TouchableHighlight> 
         </View> 
        )} 
       > 
        <Navigator 
         ref="navigator" 
         initialRoute={ROUTES[0]} 
         renderScene={route => <Text>Scene {route.name}</Text>} 
        /> 
       </DrawerLayoutAndroid> 
      </View> 
     ); 
    } 
} 

目前我不知道如何處理這個。這個警告對於不同的問題看起來也很常見。

任何人有一個想法如何解決這個問題?

回答

1

貌似,用this.refs.navigator.replace(...)代替this.refs.navigator.push(...)就能解決問題。

+0

您是如何找到解決方案的?我在ios上面臨同樣的問題...並且替換push而不是解決方案... –

+0

也許這不是一個真正的解決方案。但它解決了我的問題。我通過閱讀文檔發現了這一點。也許我不明白導航器背後的概念。我第一次使用它。祝你好運找到你的問題的解決方案。 :) – danbruegge

+0

我已經發布我的問題在那裏:http://stackoverflow.com/questions/41730072/issue-when-pushing-new-route-with-navigator,並找到了解決辦法。當您嘗試將相同的路線兩次推送到導航器堆棧時,會發生此錯誤。這也是你的情況。你有一個單一的路線,你又把它推到路線堆棧...... –

0

僅適用於其他可能會遇到同樣問題的人:當您嘗試推送已存在於導航器堆棧中的路線時,會發生此錯誤。這是禁止的。在這種情況下,更好地推送具有相同組件的新路由,或者更換最後一個路由(如果它是可重複的路由)。