2016-10-20 2 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

Просто для других людей, которые могут получить ту же проблему: эта ошибка возникает, когда вы пытаетесь направить маршрут, который уже находится в стеке Navigator. Это запрещено. В этом случае лучше подтолкнуть новый маршрут одним и тем же компонентом или заменить последний маршрут, если он является объектом дублирования.

Смежные вопросы