昨天的文章中已将 navigation 安装完成
今天就要开始当导览王了!
一起来转页吧吧吧~
.src
├── assets
│ └── icons
│ └── icon-winning.png
│ └── actionPrimary.png
├── common
├── components
│ └── Flex1.js
├── constants
│ ├── assets.js
│ ├── index.js
│ └── style.js
├── screens /// 在这里
│ └── IconScreen.js // 我使用了上次的 IconScreen 页面 XD
└── utils
懒得写的人可以直接沿用我之前的 code XD
import React from 'react';
import {Image, View, Text} from 'react-native';
import {assets, SIZE, fonts} from '@src/constants';
const IconScreen = () => {
return (
<View style={{flex: 1, justifyContent: 'center', alignItems: 'center'}}>
{/* <Flex1 /> */}
<Text style={fonts.h3}>我是h3</Text>
<View
style={{
justifyContent: 'center',
alignItems: 'center',
backgroundColor: 'black',
}}>
{console.log('height:', SIZE.height, 'width:', SIZE.width)}
<Image style={{width: 30, height: 30}} source={assets.winIcon} />
</View>
</View>
);
};
export default IconScreen;
在这边我只列出基本常用的,详细的请参考网址
在这边我只列出基本常用的,详细的请参考网址
import 'react-native-gesture-handler';
import React from 'react';
import {NavigationContainer} from '@react-navigation/native';
import {createStackNavigator} from '@react-navigation/stack';
import {Text, View} from 'react-native';
import IconScreen from '@screens/IconScreen'; // 引入 IconScreen
const Stack = createStackNavigator();
// Home 为首页, 也是可以自己开一个 screen 档案
const Home = ({navigation}) => {
return (
<View style={{flex: 1, justifyContent: 'center', alignItems: 'center'}}>
<Text>Home Screen</Text>
</View>
);
};
const App = () => {
return (
<NavigationContainer>
<Stack.Navigator initialRouteName="Home"> // initialRouteName 设定初始的页面我指向 Home
<Stack.Screen name="Home" component={Home} /> // name 就像是页面的id ; component 为指定的component页面
<Stack.Screen name="IconScreen" component={IconScreen} /> // Stack 新加入页面
</Stack.Navigator>
</NavigationContainer>
);
};
export default App;
基本上倘若每个画面的 header opetions 类似,我会先把它写成一个 constant 带入
来给大家一个例子包含:
const headerOptions = ({ route, navigation }) => ({
title: route.params ? route.params.title : props.title ? props.title : "",
// 路由的参数判断
headerTintColor: "black",
// 字体颜色
headerTitleStyle: { alignSelf: "center", fontSize: 16 }, // header 样式
headerStyle: {
height: Platform.OS === "ios" ? 88 : 44,
},
// 使用装置来判断 header 的高度
headerRight: () => (
<Image source={assets.actionPrimary} style={[styles.actionPrimary]} />
),
// 右边放入图
headerLeft: () => (
<TouchableOpacity
onPress={() => {
navigation.goBack();
}}>
<Image
source={assets.actionPrimary}
style={[styles.actionPrimary]}
onPress={() => {
navigation.goBack();
}}
/>
</TouchableOpacity>
),
// 左边放入图并使用 navigation.goBack() 回上一页
=
});
再放入 App.js
const App = () => {
return (
<NavigationContainer>
<Stack.Navigator initialRouteName="Home" >
<Stack.Screen name="Home" component={Home} options={headerOptions} /> // 放!
<Stack.Screen name="IconScreen" component={IconScreen} options={headerOptions} /> // 放!
</Stack.Navigator>
</NavigationContainer>
);
};
下指令
npm run ios
表头!!!出现了~~
Day 14 done!!! 下一篇是跳转页面跟回上一页的教学
为什麽要介绍上架到 F-Droid 而不是 Google Play Store 呢?关於上架到 G...
这篇会来教大家如何透过 Firebase 在你的 iOS App 上实作注册以及登入功能 透过 Fi...
Object content Array 是一种 Object,所以我们也能够用 key valu...
数据集的使用,常常令人一头雾水,举例来说,iris dataset这个最常用的资料集。 用一行代码就...
嗨,大家好。参加这个竞赛,很单纯的事因为朋友的邀请。 在参赛之前,有大概浏览了十来页的自我挑战文章...