如何让 React Native Web 全高?
how to make react native web full height?
我正在使用 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浏览器的结果:
尝试以下方法
container: {
flex: 1
width: '100%',
height: '100%',
margin: 0,
padding: 0,
justifyContent: 'center',
alignItems: 'center',
backgroundColor: 'red'
}
解决我问题的是位置 属性
position:'absolute'
或 position:'fixed'
亲戚不工作position:'relative'
flex: 1
和 height: "100%"
适用于移动版的 react-native-web 但不适用于 Web。 Dimensions.get("window").height
- 适用于两个版本。
您可以为此使用视口单位。如果你想让它们在 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}}/>
React native 不理解视口单位。我们可以使用react-native提供的Platform
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%'}})
}
})
使用 react-native-web
时,您应该使用视口垫片包裹 root-level 树:
<View
style={{
height: Dimensions.get('window').height,
width: Dimensions.get('window').width,
}}
>
...
</View>
这将标准化跨平台的抽象单位,并允许所有儿童正确响应测量的弹性(包括来自 onLayout
事件的正确测量)
专业提示:您应该订阅您的布局尺寸 Dimensions.addEventListener('change',...)
以捕获重新定位。
在我的 App 文件的容器中添加此样式对我来说非常有效:
const styles = StyleSheet.create({
root: {
flex:1,
...Platform.select({web: {height: '100vh'}}),
},
});
App.js 看起来像这样:
...
return(<View style={styles.root}>
...
我正在为 Web 应用程序使用 React Native Web。它有左边的永久侧边栏,右边的内容是可滚动的。
我通过向 Drawer.Screen 中的每个组件添加 ScrollView 容器来实现这一点。
然后我在 Drawer 中添加了一个 View 容器并添加了 Dimensions.get("window").height 作为它的高度。
使用 drawer navigation 创建的侧边栏导航。
希望这对某人有所帮助,我花了一些时间才正确设置它。
添加实际界面的屏幕截图
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>
我正在使用 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浏览器的结果:
尝试以下方法
container: {
flex: 1
width: '100%',
height: '100%',
margin: 0,
padding: 0,
justifyContent: 'center',
alignItems: 'center',
backgroundColor: 'red'
}
解决我问题的是位置 属性
position:'absolute'
或 position:'fixed'
亲戚不工作position:'relative'
flex: 1
和 height: "100%"
适用于移动版的 react-native-web 但不适用于 Web。 Dimensions.get("window").height
- 适用于两个版本。
您可以为此使用视口单位。如果你想让它们在 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}}/>
React native 不理解视口单位。我们可以使用react-native提供的Platform
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%'}})
}
})
使用 react-native-web
时,您应该使用视口垫片包裹 root-level 树:
<View
style={{
height: Dimensions.get('window').height,
width: Dimensions.get('window').width,
}}
>
...
</View>
这将标准化跨平台的抽象单位,并允许所有儿童正确响应测量的弹性(包括来自 onLayout
事件的正确测量)
专业提示:您应该订阅您的布局尺寸 Dimensions.addEventListener('change',...)
以捕获重新定位。
在我的 App 文件的容器中添加此样式对我来说非常有效:
const styles = StyleSheet.create({
root: {
flex:1,
...Platform.select({web: {height: '100vh'}}),
},
});
App.js 看起来像这样:
...
return(<View style={styles.root}>
...
我正在为 Web 应用程序使用 React Native Web。它有左边的永久侧边栏,右边的内容是可滚动的。
我通过向 Drawer.Screen 中的每个组件添加 ScrollView 容器来实现这一点。
然后我在 Drawer 中添加了一个 View 容器并添加了 Dimensions.get("window").height 作为它的高度。
使用 drawer navigation 创建的侧边栏导航。
希望这对某人有所帮助,我花了一些时间才正确设置它。
添加实际界面的屏幕截图
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>