Это может показаться простым вопросом, но мне нужно сложить несколько разных представлений друг на друга и программно скрыть / показать их. Каждый из них должен заполнить 100% ширины и высоты области просмотра и быть наложен поверх других.
В CSS я бы просто сделал это.
.screen{
width: 100%,
height: 100%,
position: absolute,
z-index: 1 // Increasing as they stack
}
... но реагирующий родной эквивалент, похоже, не работал, слой полностью исчез с экрана. Кроме того, я использую Expo, чтобы показать это на своем телефоне с Android, поэтому у меня нет доступа к инспектору инструментов разработки, как в Chrome, чтобы узнать, что не так.
Может показаться, что мне нужен маршрутизатор, и я собираюсь использовать его для переключения между моими основными маршрутами, но это больше для создания многоуровневого фонового эффекта, который мне нужно сидеть за всеми экранами.





Вам нужно добавить top:0 и left:0, также это zIndex, а не z-index. Попробуй это:
import React, { Component } from 'react';
import { StyleSheet, View } from 'react-native';
type Props = {};
export default class App extends Component<Props> {
state = { screenToShow: 0 };
componentDidMount() {
this.changeScreen();
}
changeScreen() {
setTimeout(() => {
this.setState(
{
screenToShow: (this.state.screenToShow + 1) % 4,
},
this.changeScreen
);
}, 1000);
}
render() {
const screenToShow = this.state.screenToShow;
return (
<View style = {styles.container}>
<View
style = {[
styles.screen,
{ zIndex: screenToShow === 0 ? 1000 : -1, backgroundColor: 'red' },
]}
/>
<View
style = {[
styles.screen,
{ zIndex: screenToShow === 1 ? 1000 : -1, backgroundColor: 'blue' },
]}
/>
<View
style = {[
styles.screen,
{
zIndex: screenToShow === 2 ? 1000 : -1,
backgroundColor: 'green',
},
]}
/>
<View
style = {[
styles.screen,
{
zIndex: screenToShow === 3 ? 1000 : -1,
backgroundColor: 'yellow',
},
]}
/>
</View>
);
}
}
const styles = StyleSheet.create({
container: {
flex: 1,
justifyContent: 'center',
alignItems: 'center',
backgroundColor: '#F5FCFF',
},
screen: {
position: 'absolute',
height: '100%',
width: '100%',
top: 0,
left: 0,
},
});
Спасибо это прекрасно