react-native 入门基础介绍
一个简单的demo,用于介绍react-native相关基础信息,主要是针对有兴趣的同学参考;以下内容及代码在2018-08测试有效。
安装
- npm install -g create-react-native-app
- create-react-native-app you-app-name
- cd you-app-name
- npm start
- download Expo app:https://expo.io/(可能要注册)在手机上安装
- 扫描 npm start 后显示的二维码
为了项目顺利,请备好梯子!
这里是通过在手机上安装Expo,然后用Expo扫描启动项目后生成的二维码来预览你的react-native项目,前提是PC的IP要与手机的IP在同一个网段内。Expo打包你的项目后,每次PC端Ctrl+S都会自动更新Expo的内容。本文不介绍安装模拟器的开发方式,需要的请自行Google。
项目
主要目录结构
|—— app.js
|—— view
|—— Home.js
|—— cookbook
|—— Cookbook.js
|—— Detail.js
|—— List.js
|—— novel
|—— Novel.js
以下所有涉及组件属性请参考文章最后官网链接进行查看,本文只对关键属性作说明。
路由组件使用:react-native
UI组件使用:native-base
入口
export default createDrawerNavigator({
home: {
screen: Home
},
novel: {
screen: Novel
},
cookbook: {
screen: Cookbook
},
}, {
drawerBackgroundColor: '#ffffff',
contentOptions: {
activeTintColor: '#e91e63',
}
});
首页使用侧滑(createDrawerNavigator)路由组件,默认显示路由为对象的第一个属性值。
Home模块
export default class Home extends Component {
static navigationOptions = {
drawerLabel: 'Home',
drawerIcon: ({ tintColor }) => (
<Image
source={require('./../public/img/menu.png')}
style={[styles.icon, { tintColor: tintColor }]}
/>
),
};
render() {
return (
<View
style={{ flex: 1, marginTop: 20 }}
>
<View
style={{ flex: 1, alignItems:'center', justifyContent: 'center' }}
>
<TouchableHighlight
underlayColor={ '#fff' }
activeOpacity={ 1 }
onPress={ () => this.props.navigation.openDrawer() }>
<Image
style={{ height: 220, width: 220, borderRadius: 110 }}
source={require('./../public/img/avatar.jpg')}
/>
</TouchableHighlight>
</View>
</View>
);
}
}
该页面主要是首屏显示内容,根据页面代码注意以下三点:
- 图片链接要用TouchableHighlight
- 使用navigation.openDrawer()方法打开侧滑
- 图片地址要用require(url)方法引入
Coobook模块
const navigationConfig = {
header: null
}
export default App = createStackNavigator({
List: {
screen: List,
path: 'list/:id',
navigationOptions: (navigation) => (navigationConfig)
},
Detail: {
screen: Detail,
navigationOptions: (navigation) => ({
title: '详情'
})
},
})
cook模块功能是提供一个列表页,点击列表项进入详情页,注意以下三点:
- 用createStackNavigator路由组件实现。
- List 页面不需要顶部的header所以设置为null(具体参见文档)
- 因为详情页需要id这里可以用list/:id传参
List模块
export default class ListComponent extends Component {
render() {
return (
<View
style={{ flex: 1, paddingTop: 20 }}
>
<Container>
<Content>
<List>
<ListItem avatar onPress={() => {
this.props.navigation.navigate('Detail', {
id: 0
})
}}>
<Left>
<Thumbnail source={{ uri: 'http://xx.jpg' }} />
</Left>
<Body>
<Text>回锅肉</Text>
<Text note>一道好吃到板的菜</Text>
</Body>
<Right>
<Text note>2018-08-21</Text>
</Right>
</ListItem>
</List>
</Content>
</Container>
</View>
);
}
}
该组件用到了native-base UI组件
注意以下四点:
- 注意组件只能用提供的,style的属性也是只能用提供的。
- 顶部菜单栏高为20 ,所有宽高都不需要加单位,会自动转化为设备单位
- 文字必须要用Text包裹
- 路由跳转由navigation.navigate('name', params)实现
novel模块
export default createBottomTabNavigator({
Home: {
screen: HomeScreen,
navigationOptions: () => ({
tabBarVisible : true,
title: '蚂蚁国度',
headerBackTitle: null
}),
},
Settings: {
screen: SettingsScreen,
navigationOptions: () => ({
tabBarVisible : true,
title: '最强神级兵王',
headerBackTitle: null
}),
},
}, {
headerMode: 'screen',
});
该模块采用在底部点击菜单按钮的形式来查看不同小说,所以采用新的路由方式:
- 使用createBottomTabNavigator切换screen
- 页面内容多需要滑动,需用ScrollView组件包裹
相关参考
- RN官网:https://facebook.github.io/react-native/
- React Navigation官网: https://reactnavigation.org/
- nativeBase组件:https://nativebase.io/
若有疑问或错误,请指正,谢谢!Github blog issues
react-native 入门基础介绍的更多相关文章
- React Native 入门基础知识总结
中秋在家闲得无事,想着做点啥,后来想想,为啥不学学 react native.在学习 React Native 时, 需要对前端(HTML,CSS,JavaScript)知识有所了解.对于JS,可以看 ...
- React Native入门教程2 -- 基本组件使用及样式
在上一篇文章中,我们学会了如何搭建React Native的环境(React Native入门教程(笔记) 1 – 开发环境搭建),不知道你们是否搭建好了呢,如果还没有,那么快动起小手,来体验RN带给 ...
- React Native入门教程 3 -- Flex布局
上一篇文章中介绍了基本组件的使用 React Native入门教程(笔记) 2 – 基本组件使用及样式 本节内容将继续沿用facebook官方例子介绍如何使用Flexbox布局把界面设计的多样化. 转 ...
- React Native入门教程 1 -- 开发环境搭建
有人问我为啥很久不更新博客..我只能说在学校宿舍真的没有学习的环境..基本上在宿舍里面很颓废..不过要毕业找工作了,我要渐渐把这个心态调整过来,就从react-native第一篇博客开始.话说RN也出 ...
- React Native入门——布局实践:开发京东client首页(一)
有了一些对React Native开发的简单了解,让我们从实战出发.一起来构建一个简单的京东client. 这个client是仿照之前版本号的京东client开发的Android版应用,来源于CSDN ...
- React Native入门-刘望舒
React Native入门(一)环境搭建与Hello World React Native入门(二)Atom+Nuclide安装.配置与调试 React Native入门(三)组件的Props(属性 ...
- React Native入门——IDE及其它相关基础技术
关于React Native的开发,当中一个问题是缺少好用的IDE,有些人说不就是JS么,搞一个记事本也就写了,那样尽管牛逼,但事实上还是非常头大的,有一款好的IDE还是能提升开发效率的,这里对几个还 ...
- React Native之 ScrollView介绍和使用
前言 学习本系列内容需要具备一定 HTML 开发基础,没有基础的朋友可以先转至 HTML快速入门(一) 学习 本人接触 React Native 时间并不是特别长,所以对其中的内容和性质了解可能会有所 ...
- React Native 之 Touchable 介绍与使用
前言 学习本系列内容需要具备一定 HTML 开发基础,没有基础的朋友可以先转至 HTML快速入门(一) 学习 本人接触 React Native 时间并不是特别长,所以对其中的内容和性质了解可能会有所 ...
- react native 入门实践
上周末开始接触react native,版本为0.37,边学边看写了个demo,语法使用es6/7和jsx.准备分享一下这个过程.之前没有native开发和react的使用经验,不对之处烦请指出.希望 ...
随机推荐
- 从零开始实现放置游戏(十)——实现战斗挂机(1)hessian服务端搭建
前面实现RMS系统时,我们让其直接访问底层数据库.后面我们在idlewow-game模块实现游戏逻辑时,将不再直接访问底层数据,而是通过hessian服务暴露接口给表现层. 本章,我们先把hessia ...
- (转)Java 8 中的 Streams API 详解
为什么需要 Stream Stream 作为 Java 8 的一大亮点,它与 java.io 包里的 InputStream 和 OutputStream 是完全不同的概念.它也不同于 StAX 对 ...
- Altium Designer设计PCB--如何增大电源地的线宽
笑话: 看见楼下老大爷在下棋,我看了一会儿,跟大爷说:大爷,你che没了. 大爷一脸不屑:小朋友,那叫ju. 然后我静静地在那看了两个小时. 对完棋,大爷起身要走. 我说:大爷,我刚才说的不是你的棋, ...
- MYSQL手工注入(详细步骤)—— 待补充
0x00 SQL注入的分类: (1)基于从服务器接收到的响应 ▲基于错误的 SQL 注入 ▲联合查询的类型 ▲堆查询注射 ▲SQL 盲注 ...
- UVA1327 && POJ1904 King's Quest(tarjan+巧妙建图+强连通分量+缩点)
UVA1327 King's Quest POJ1904 King's Quest 题意: 有n个王子,每个王子都有k个喜欢的妹子,每个王子只能和喜欢的妹子结婚.现有一个匹配表,将每个王子都与一个自己 ...
- SSAS多维设计模型与报表客户端-Excel透视表制作
VS:SSAS设计多维设计模型: 数据源视图.dsv: 数据源视图表,名称命名规范:vw_表名(事实表_F_/维表_D_),
- 算法学习笔记,几个简单的Demo
算法初学的一些心得 前言:现在工作也快一年多了,有时间下班回家会学学算法,陆陆续续也接触了一些 貌似我知道的就冒泡排序其他的都不是很了解 最近买了一本书,边学边记录吧! 一些常用的方法 暴力破解 下面 ...
- restapi(2)- generic restful CRUD:通用的restful风格数据库表维护工具
研究关于restapi的初衷是想搞一套通用的平台数据表维护http工具.前面谈过身份验证和使用权限.文件的上传下载,这次来到具体的数据库表维护.我们在这篇示范里设计一套通用的对平台每一个数据表的标准维 ...
- Nodejs监控Apple召回计划&邮件提醒
最近,我的MacBook Pro 2015款13寸电池膨胀了 把笔记本平放在桌面,四个脚中的前两个无法落地,笔记本盖合上之后,屏幕上会印上键盘的纹路,也就是说,笔记本C面D面变形了,已经购买超过3年, ...
- 原 docker 安装使用 solr
1.安装solr 7.5 docker solr 官网:https://hub.docker.com/_/solr/ docker pull solr:7.5.0 2.启动solr服务 docker ...