Как заставить реагировать родную сеть на полную высоту?

Я использую встроенную веб-библиотеку реагирования, но я не могу сделать полную высоту в сети

Код:

import React from 'react';
import {StyleSheet, View, Text, TouchableOpacity} from 'react-native';

class index extends React.Component {

    render() {
        return (
            <View style={styles.container}>

                <TouchableOpacity
                    style={{
                    backgroundColor: 'blue'
                }}>
                    <Text style={{
                        color: 'green'
                    }}>Learning</Text>
                </TouchableOpacity>
            </View>
        );
    }
}

const styles = StyleSheet.create({
    container: {
        width: '100%',
        height: '100%',
        margin: 0,
        padding: 0,
        justifyContent: 'center',
        alignItems: 'center',
        backgroundColor: 'red'
    }
})

export default index;

Результат браузера Chrome:

8 ответов

React native не поддерживает единицы просмотра. Мы можем использоватьPlatform API, предоставляемый react-native.

Если вам нужна полная высота для мобильных устройств, а также для Интернета при использовании react-native-web, попробуйте этот метод.

<View style={styles.fullHeight}>
  <Text>Hey there</Text>
</View>

CSS код

const styles = StyleSheet.create({
  fullHeight: {
    height: Platform.OS === 'web' ? '100vh' : '100%'
  }
})

Что решает мою проблему, так это свойство позиции

position:'absolute' или же position:'fixed'

родственник не работает position:'relative'

flex: 1 а также height: "100%" отлично работает для мобильной версии реакции-нативной сети, но не для сети. Dimensions.get("window").height - хорошо работает для обеих версий.

Когда используешь react-native-web, вы должны обернуть дерево корневого уровня прокладкой области просмотра:

    <View
      style={{
        height: Dimensions.get('window').height,
        width: Dimensions.get('window').width,
      }}
    >
      ...
    </View>

Это нормализует абстрактные единицы на платформе и позволит всем детям правильно реагировать на измеренный изгиб (включая правильные измерения от onLayout событие)

Совет: подписывайтесь на размеры макетов на Dimensions.addEventListener('change',...) фиксировать переориентации.

Добавление этого стиля в контейнер моего файла приложения работает для меня Acctully:

      const styles = StyleSheet.create({
  root: {
    flex:1,
    ...Platform.select({web: {height: '100vh'}}),
  },
});

App.js выглядит так:

      ...
return(<View style={styles.root}>
...

Я использую собственный веб-сайт для веб-приложения. Он имеет левую постоянную боковую панель, а содержимое справа можно прокручивать.

Я добился этого, добавив контейнер ScrollView к каждому компоненту в Drawer.Screen.

Затем я добавил контейнер View в Drawer и добавил Dimensions.get ("window"). Height в качестве высоты к нему.

Боковая панель навигации создается с помощью панели навигации .

Надеюсь, это кому-то поможет, мне потребовалось время, чтобы правильно его настроить.

Добавление скриншота из реального интерфейса

      import {Dimensions, ScrollView, Text, View} from 'react-native';
import { createDrawerNavigator } from '@react-navigation/drawer';

// Get window height to make screens scrollable
const windowHeight = Dimensions.get('window').height;

function Feed() {
  return (
    <ScrollView>
      <Text>Feed Screen</Text>
    </ScrollView>
  );
}

function Notifications() {
  return (
    <ScrollView>
      <Text>Notifications Screen</Text>
    </ScrollView>
  );
}

const Drawer = createDrawerNavigator();

function MyDrawer() {
  return (
    <Drawer.Navigator initialRouteName="Feed" drawerType="permanent">
      <Drawer.Screen
        name="Feed"
        component={Feed}
        options={{ drawerLabel: 'Home' }}
      />
      <Drawer.Screen
        name="Notifications"
        component={Notifications}
        options={{ drawerLabel: 'Updates' }}
      />
    </Drawer.Navigator>
  );
}
<View style={{height: windowHeight}}>
  <MyDrawer />
</View>

Попробуйте следующее

 container: {
        flex: 1
        width: '100%',
        height: '100%',
        margin: 0,
        padding: 0,
        justifyContent: 'center',
        alignItems: 'center',
        backgroundColor: 'red'
    }

Вы можете использовать Viewports Units для этого. Если вы хотите, чтобы они реагировали на родную систему, вам необходимо:

npm install react-native-viewport-units --save

https://www.npmjs.com/package/react-native-viewport-units

С этим вы можете сделать.

var {vw, vh, vmin, vmax} = require('react-native-viewport-units');

<View style={{width:100*vw}}/>
Другие вопросы по тегам