10

我正在使用 React Native Web 库,但我无法在 Web 上实现全高度

代码:

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浏览器的结果: 在此处输入图像描述

4

8 回答 8

6

解决我的问题的是位置属性

position:'absolute'或者position:'fixed'

亲戚不工作position:'relative'

于 2017-12-26T11:18:15.747 回答
5

React Native 不理解视口单元。我们可以使用Platformreact-native 提供的 API。

如果您在使用 react-native-web 时想要移动设备和网络的全高,请尝试此方法。

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

CSS 代码

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

或者

const styles = StyleSheet.create({
   fullHeight: {
     ...Platform.select({web: {height: '100vh'}, default: {height: '100%'}})
   }
})
于 2019-10-22T18:58:28.783 回答
4

flex: 1并且height: "100%"适用于 react-native-web 的移动版本,但不适用于 web。Dimensions.get("window").height- 对两个版本都有效。

于 2019-03-10T09:41:11.290 回答
0

尝试以下

 container: {
        flex: 1
        width: '100%',
        height: '100%',
        margin: 0,
        padding: 0,
        justifyContent: 'center',
        alignItems: 'center',
        backgroundColor: 'red'
    }
于 2017-12-26T10:16:42.803 回答
0

使用时react-native-web,您应该使用视口 shim 包装根级树:

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

这将使跨平台的抽象单元标准化,并允许所有孩子正确响应测量的弹性(包括来自onLayout事件的正确测量)

专业提示:您应该订阅您的布局大小Dimensions.addEventListener('change',...)以捕捉重定向。

于 2020-09-10T10:20:55.933 回答
0

您可以为此使用视口单位。如果您希望它们在 react-native 上使用,您需要:

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}}/>
于 2019-03-10T09:58:10.573 回答
0

我正在将本机 Web 用于 Web 应用程序。它有左侧永久侧边栏,右侧的内容是可滚动的。

我通过将 ScrollView 容器添加到 Drawer.Screen 中的每个组件来实现这一点。

然后我在 Drawer 中添加了一个 View 容器,并添加了 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>
于 2021-03-26T12:38:16.817 回答
0

在我的 App 文件的容器上添加这种样式对我来说非常有效:

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

App.js 看起来像这样:

...
return(<View style={styles.root}>
...
于 2020-12-18T11:33:18.093 回答