React-Native学习系列(一)
近段时间一直在忙,所以博客也没有更新,这两天我翻了一下写的这几篇博客,感觉写的都很片面,所以,我想重新写一个系列教程,从最基础的开始,来让大家更容易学会React-Native。
这个系列大部分只介绍Android和iOS通用的部分
一、关于RN环境搭建
这个问题我在博客上写过,既然是系列教程,那么就在这个系列里面重新再写一遍
1、Mac上搭建RN开发环境
安装homebrew:打开终端输入
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
在Max OS X 10.11(El Capitan)版本中,homebrew在安装软件时可能会碰到/usr/local目录不可写的权限问题。可以使用下面的命令修复:
sudo chown -R `whoami` /usr/local
通过HomeBrew来安装Node.js
brew install node
安装React Native的命令行工具(react-native-cli)
npm install -g react-native-cli
如果你看到EACCES: permission denied这样的权限报错,那么修复权限问题
sudo chown -R `whoami` /usr/local
既然要做iOS开发,那么Xcode不会不知道吧,开发iOS必不可少的工具Xcode,这个可以直接在AppStore里面下载。
安装WatchMan
brew install watchman
环境搭建完毕,创建运行RN项目
react-native init AwesomeProject
cd AwesomeProject
react-native run-ios
2、Mac上搭建RN安卓开发环境
这里有一篇教程挺详细的react native android开发环境搭建(mac系统),这里我就不再多说(我不会告诉大家我搭建完成之后就没在意搭建的具体步骤...)。
二、关于RN文件介绍
刚创建好的应用程序文件夹如下图所示

其中app文件夹是我自己创建的,咱们看一下文件夹中的内容:__tests__文件夹是最近才加进去的,前几个版本没有,应该是测试用的,暂时没做研究,ios和android文件夹对应iOS和安卓程序的文件存放的文件夹,浙西而我们不用管,node_modules是我们开发所需要的依赖库。package.json是配置文件,index.android.js和index.ios.js是我们程序的入口文件,我们写的代码就是在这里写的。打开index.ios.js我们可以看到这些
import React, { Component } from 'react';
import {
AppRegistry,
StyleSheet,
Text,
View
} from 'react-native';
export default class AwesomeProject extends Component {
render() {
return (
<View style={styles.container}>
<Text style={styles.welcome}>
Welcome to React Native!
</Text>
<Text style={styles.instructions}>
To get started, edit index.android.js
</Text>
<Text style={styles.instructions}>
Double tap R on your keyboard to reload,{'\n'}
Shake or press menu button for dev menu
</Text>
</View>
);
}
}
const styles = StyleSheet.create({
container: {
flex: 1,
justifyContent: 'center',
alignItems: 'center',
backgroundColor: '#F5FCFF',
},
welcome: {
fontSize: 20,
textAlign: 'center',
margin: 10,
},
instructions: {
textAlign: 'center',
color: '#333333',
marginBottom: 5,
},
});
AppRegistry.registerComponent('AwesomeProject', () => AwesomeProject);
具体介绍可以看我的这篇博客
好了,接下来开始我们的系列教程
三、Text
这里我直接用我已经写好的框架来介绍RN的组件Text
显而易见,Text就是文本,就如同你现在看到的文字。
那么如何使用呢?
其实在index.ios.js文件中有这样的组件。那是最基础的用法
<Text> Welcome to React Native!</Text>
其实Text有很多属性和样式,以下是一些常用的属性和样式!
import React, { Component } from 'react';
import {
StyleSheet,
Text,
View
} from 'react-native';
export default class TextClass extends Component {
onPressTitle(){
//Text onPress的点击方法,点击之后的操作写在这里!
}
render() {
//numberOfLines表示的是文本的行数,包括折叠产生的换行在内,总的行数不会超过这个属性的限制
//onPress当文本被点击以后调用此回调函数。
//style文本的样式,这里把常用的样式列出来供大家参考,除了自身的样式外,还继承了View的样式
//View的样式咱们后边再说,现在先看Text的样式
//ellipsizeMode:设置文本省略的位置,必须和numberOfLines配合使用
//
//如下,Text可以嵌套使用,不过一般为了文字上下左右居中,用View嵌套Text
return (
<View style={styles.container}>
<Text numberOfLines={1}
onPress={this.onPressTitle}
style={styles.textstyle}
ellipsizeMode='head'>
你好!我是Demon404,欢迎关注我!
</Text>
<Text style={{fontWeight: 'normal'}}>
I am bold
<Text style={{color: 'red'}}>
and red
</Text>
</Text>
</View>
);
}
}
const styles = StyleSheet.create({
container: {
flex: 1,
justifyContent: 'center',
alignItems: 'center',
backgroundColor: '#F5FCFF',
},
textstyle: {
color: 'black',//文字的颜色
fontFamily: 'Times',//设置字体
fontSize: 20,//设置文字大小
fontStyle: 'italic',//设置文字:normal:正常体;italic:斜体
fontWeight: 'normal',//设置粗体字,'normal' /*default*/, 'bold', '100', '200', '300', '400', '500', '600', '700', '800', '900'
lineHeight: 30,//设置行高
textAlign: 'center',//设置字体位置,'auto' /*default*/, 'left', 'right', 'center', 'justify'
textDecorationLine: 'underline',//下划线和删除线的样式:['none' /*default*/, 'underline', 'line-through', 'underline line-through'
}
});
四、View
接下来我们说最常用的控件View,在开发过程中,View是必不可少的
export default class ViewClass extends Component {
render() {
return (
<View style={styles.container}>
</View>
);
}
}
View是一个支持Flexbox布局、样式、一些触摸处理、和一些无障碍功能的容器,并且它可以放到其它的视图里,也可以有任意多个任意类型的子视图。不论在什么平台上,View都会直接对应一个平台的原生视图。
View使用挺简单的,直接使用就可以,这里我着重介绍一下View的属性和它的一些样式,其中View有一个最重要的Flex布局,这个篇幅比较长,咱们新开一个文章讲解
import React, { Component } from 'react';
import {
StyleSheet,
Text,
View
} from 'react-native';
export default class ViewClass extends Component {
//View常用属性暂时就介绍这么多,其他的咱们以后重点介绍
doubleClick() {
//双击之后的事件处理写在这里
}
moveTest() {
console.log('移动');
}
render() {
//accessible表示此视图时一个启用了无障碍功能的元素。默认为true
//onMagicTap:当accessible为true时,双击View会调用此函数。
//onMoveShouldSetResponder: 触摸控件并滑动时调用的方法
//onMoveShouldSetResponderCapture:触摸控件并滑动时调用的方法,避免子视图响应
//onResponderMove:用户在View上移动手指调用
//onResponderRelease:结束触摸时调用
//pointerEvents:控制当前视图是否可以触控'box-none', 'none', 'box-only', 'auto'
//其他的属性以后在介绍
return (
<View style={styles.container}>
<View style={styles.viewStyle}
accessible={true}
onMagicTap={this.doubleClick}
onMoveShouldSetResponderCapture={this.moveTest}
pointerEvents='auto'>
</View>
</View>
);
}
}
const styles = StyleSheet.create({
//View样式有Flex布局
//一般来说,使用flexDirection、alignItems和 justifyContent三个样式属性就已经能满足大多数布局需求
//flexDirection的默认值是column而不是row,alignItems的默认值是stretch而不是flex-start,以及flex只能指定一个数字值。
//关于flex布局咱们另起一篇文章。
container: {
flex: 1,
//当设置justifyContent: 'center',//上下居中 alignItems: 'center',//左右居中
//那么这个View中的子视图都会在这个View的中间
justifyContent: 'center',//上下居中
alignItems: 'center',//左右居中
backgroundColor: '#F5FCFF',
},
viewStyle: {
width: 100,//设置宽度
height: 100,//设置高度
backgroundColor: 'red',//背景颜色
backfaceVisibility: 'visible',//定义界面翻转的‘visible', 'hidden’
borderBottomColor: 'blue',//设置底部边框颜色
borderBottomLeftRadius: 20,//设置左下圆角大小
borderBottomRightRadius: 40,//设置右下圆角大小
borderBottomWidth: 2,//设置底部边框的粗细大小
//borderColor:'green',//设置所有边框颜色
borderLeftColor: 'green',//设置左边框颜色
borderLeftWidth: 5,//设置左边框粗细大小
//borderRadius : 10,//设置正题边框圆角大小
//borderRightColor
//borderRightWidth
borderStyle: 'solid',//设置边框样式'solid', 'dotted', 'dashed'
//borderTopColor color
//borderTopLeftRadius ReactPropTypes.number
//borderTopRightRadius ReactPropTypes.number
//borderTopWidth ReactPropTypes.number
//borderWidth ReactPropTypes.number
overflow: 'visible',//设置内容超过容器显示还是隐藏'visible', 'hidden'
opacity: 0.5,//设置透明度
}
});
React-Native学习系列(一)的更多相关文章
- React Native 学习-01
React Native 学习 (学习版本 0.39) 一.环境配置 二.IDE选择 webstorm 1.webstorm配置 ①.首先是可以选择使用汉化包汉化.eu68 ②.安装插件和外部库. 由 ...
- react native 学习一(环境搭配和常见错误的解决)
react native 学习一(环境搭配) 首页,按照http://reactnative.cn/docs/0.30/getting-started.html#content上的介绍,下载安装pyt ...
- React Native 学习资料
React Native 学习资料 学习资料 网址 React Native中文网 https://reactnative.cn/
- React Native实战系列教程之自定义原生UI组件和VideoView视频播放器开发
React Native实战系列教程之自定义原生UI组件和VideoView视频播放器开发 2016/09/23 | React Native技术文章 | Sky丶清| 4 条评论 | 1 ...
- React Native 学习(三)之 FlexBox 布局
React Native 学习(三)之 FlexBox 布局
- React Native 学习笔记--进阶(二)--动画
React Native 进阶(二)–动画 动画 流畅.有意义的动画对于移动应用用户体验来说是非常必要的.我们可以联合使用两个互补的系统:用于全局的布局动画LayoutAnimation,和用于创建更 ...
- React Native学习方法论
这是我技术公众号的第一篇文章,也是React Native系列文章的第一篇,对我的文章感兴趣的可以加我微信16230091进行关注. 本文表面上讲React Native(以下简称RN),实际上对于学 ...
- iOS、swift、React Native学习常用的社区、论坛
<!----iOS> <!----Swift>*IOS开发常用社区:http://code4app.com/ *IOS开发常用社区:http://www.cocoachina. ...
- react native 学习资料整理
入门教程 深入浅出 React Native:使用 JavaScript 构建原生应用 http://www.appcoda.com/react-native-introduction/ 中文版 h ...
- iOS 写给iOS开发者的React Native学习路线(转)
我是一名iOS开发者,断断续续一年前开始接触React Native,最近由于工作需要,专职学习React Native也有一个多月了.网络上知识资源非常的多,但能让人豁然开朗.迅速学习的还是少数,我 ...
随机推荐
- 步入angularjs directive(指令)--准备工作熟悉hasOwnProperty
在讲解directive之前,先做一下准备工作,为何要这样呢? 因为我们不是简单的说说directive怎么用,还要知道为什么这么用!(今天我们先磨磨刀!). 首先我们讲讲js 基础的知识--hasO ...
- [数据结构]——二叉树(Binary Tree)、二叉搜索树(Binary Search Tree)及其衍生算法
二叉树(Binary Tree)是最简单的树形数据结构,然而却十分精妙.其衍生出各种算法,以致于占据了数据结构的半壁江山.STL中大名顶顶的关联容器--集合(set).映射(map)便是使用二叉树实现 ...
- 如何用Java类配置Spring MVC(不通过web.xml和XML方式)
DispatcherServlet是Spring MVC的核心,按照传统方式, 需要把它配置到web.xml中. 我个人比较不喜欢XML配置方式, XML看起来太累, 冗长繁琐. 还好借助于Servl ...
- ABP文档翻译--值对象
本人是ABP初学者,在看英文文档和@tkb至简 的ABP框架理论研究总结(典藏版)时,发现大神@tkb至简中少了对Value Objects的翻译,看文档是新的,大神没时间把,小弟给补充上. 介绍 值 ...
- Android AndroidRuntime类
AndroidRuntime类是安卓底层很重要的一个类,它负责启动虚拟机以及Java线程,AndroidRuntime类在一个进程中只有一个实例对象保存在全局变量,gCurRuntime中.
- babel-loader-presets
babel-loader的presets的设置有一定的顺序.es2015必须出现在stage-0前面,我记得这是因为es2015是ES6的标准,state-0等是对ES7一些提案的支持, state- ...
- MVP初探
什么是MVP MVP是一种UI的架构模式,是MVC的一种变体,适用于基于事件驱动的应用框架.MVP中的M和V分别对应了MVC中的Model和View,而P代替了Controller,而它更多地体现在了 ...
- 兼容Mono的下一代云环境Web开发框架ASP.NET vNext
微软在2014年5月12日的TechEd大会上宣布将会发布下一代ASP.NET框架ASP.NET vNext的预览.此次发布的ASP.NET框架与以前相比发生了根本性的变化,凸显了微软“云优先”(cl ...
- .NET Web的身份认证
百度一下”asp.net身份认证“,你会得到很多相关的资料,这些资料通常上来就会介绍诸如”Form认证“”Windows认证“等内容,而没有给出一个完整的流程.初学者对此往往一头雾水,我也曾经被坑过很 ...
- 刷LeetCode的正确姿势——第1、125题
最近刷LeetCode比较频繁,就购买了官方的参考电子书 (CleanCodeHandbook),里面有题目的解析和范例源代码,可以省去非常多寻找免费经验分享内容和整理这些资料的时间.惊喜的是,里面的 ...