Ответ 1
У меня была аналогичная проблема. Я добавил следующее в мою таблицу стилей:
...
wrapper: {
flex: 1,
}...
а затем дал NavigatorIOS
компоненту стиль wrapper
. Это устранило проблему.
Я не могу заставить этот простой тест NavigatorIOS работать. Консоль записывает в My View триггеры, и я могу получить ее для рендеринга, если я пропущу компонент NavigatorIOS и сделаю MyView напрямую. Однако, когда MyView запускается из компонента в компоненте NavigatorIOS, он не будет отображать ничего, кроме "теста My NavigatorIOS".
var React = require('react-native');
var {
AppRegistry,
StyleSheet,
NavigatorIOS,
Text,
View,
} = React;
var navigation = React.createClass ({
render: function() {
return (
<NavigatorIOS
initialRoute={{
component: MyView,
title: 'My NavigatorIOS test',
passProps: { myProp: 'foo' },
}}/>
);
},
});
var MyView = React.createClass({
render: function(){
console.log('My View render triggered');
return (
<View style={styles.container}>
<Text style={styles.welcome}>
Hello there, welcome to My View
</Text>
</View>
);
}
});
var styles = StyleSheet.create({
container: {
flex: 1,
justifyContent: 'center',
alignItems: 'center',
backgroundColor: '#F5FCFF',
},
welcome: {
fontSize: 20,
textAlign: 'center',
margin: 10,
}
});
AppRegistry.registerComponent('navigation', () => navigation);
У меня была аналогичная проблема. Я добавил следующее в мою таблицу стилей:
...
wrapper: {
flex: 1,
}...
а затем дал NavigatorIOS
компоненту стиль wrapper
. Это устранило проблему.
Добавьте стиль контейнера в NavigatorIOS, он должен быть гибким: 1, чтобы правильно показать дочерний компонент (у меня была такая же проблема).
Я столкнулся с той же проблемой, моя ошибка была в стилях:
var styles = StyleSheet.create({
container: {
flex: 1,
justifyContent: 'center',
alignItems: 'center',
backgroundColor: '#F5FCFF',
}
});
Мне пришлось удалить justifyContent
и alignItems
. Проблема решена для меня.
У меня была такая же проблема. Оказалось, что я должен был добавить некоторый запас в верхнюю часть представления внутри компонента MyView.
Попробуйте следующее:
var React = require('react-native');
var {
AppRegistry,
StyleSheet,
NavigatorIOS,
Text,
View,
} = React;
var navigation = React.createClass ({
render: function() {
return (
<NavigatorIOS
style={styles.container}
initialRoute={{
component: MyView,
title: 'My NavigatorIOS test',
passProps: { myProp: 'foo' },
}}/>
);
},
});
var MyView = React.createClass({
render: function(){
console.log('My View render triggered');
return (
<View style={styles.wrapper}>
<Text style={styles.welcome}>
Hello there, welcome to My View
</Text>
</View>
);
}
});
var styles = StyleSheet.create({
container: {
flex: 1,
},
wrapper: {
justifyContent: 'center',
alignItems: 'center',
backgroundColor: '#F5FCFF',
marginTop: 80
},
welcome: {
fontSize: 20,
textAlign: 'center',
margin: 10,
}
});
AppRegistry.registerComponent('navigation', () => navigation);
У меня тоже была аналогичная проблема (глупо), поскольку я дал NavigatorIOS цвет фона, а это означало, что по какой-то причине он закрывал фактический компонент внутри него.
У меня была аналогичная проблема, когда я использую Navigator и ничего не отвечаю на ответы. Поэтому я использую this.forceUpdate();, чтобы принудительно нажать кнопку "Обновить".
Я встречаю ту же проблему. Для меня это проблема стиля. Я создаю и использую новый контейнер свойств свойстваNV для NavigatorIOS. Это решило мою проблему.
var styles = StyleSheet.create({
containerNV: {
flex: 1,
backgroundColor: '#05FCFF',
}
});
Была та же проблема. На моем основном экране ничего не отображалось. Через 2 часа я решил удалить элемент <View>
, с которым я обматывал навигатор, и внезапно все сработало.
Вкратце, я пошел от этого:
<View>
<NavigatorIOS
style={styles.container}
initialRoute={{
component: MainPage,
title: 'MainPage',
}}/>
</View>
к этому
<NavigatorIOS
style={styles.container}
initialRoute={{
component: MainPage,
title: 'MainPage',
}}/>