• React Native 爬坑之路


    1.react 基础 (创建组件及在浏览器上渲染组件)

    <!DOCTYPE html>
    <html lang="en">
    <head>
    	<meta charset="UTF-8">
    	<title>Document</title>
    	<!-- 1.react.js是React的核心库 -->
    	<script src="js/react.min.js" charset="utf-8"></script>
    	<!-- 2.react-dom.js的作用是提供与DOM相关的功能 -->
    	<script src="js/react-dom.min.js" charset="utf-8"></script>
    	<!-- 3.browser.min.js的作用是将JSX语法转换成JavaScript语法 -->
    	<script src="js/browser.min.js" charset="utf-8"></script>
    	<!-- <script src="https://cdnjs.cloudflare.com/ajax/libs/babel-core/5.8.24/browser.min.js" charset="utf-8"></script> -->
    </head>
    <body>
    	<!-- 6.React渲染的模板内容会插入到这个DOM节点中,作为一个容器 -->
    	<div id="container">
    		
    	</div>
    </body>
    <!-- 4.在React开发中,使用JSX,跟JavaScript不兼容,在使用JSX的地方,要设置type:text/babel -->
    <!-- 5.babel是一个转换编译器,ES6转成可以在浏览器中运行的代码 -->
    <script type="text/babel">
    	// 7.在此处编写React代码
    	
    	// 8.需求:渲染一行标题,显示"Hello React"
    	//
    	/*
    		ReactDOM.render()
    		React的基本方法,用于将模板转换成HTML语言,渲染DOM,并插入指定的DOM节点中
    
    		3个参数
    		第一个:模板的渲染内容(HTML形式)
    		第二个:这段模板需要插入的DOM节点(本程序中,是id为container的div节点)
    		第三个:渲染后的回调,一般不用
    	*/
    
    	// ReactDOM.render(
    	// 	<h1>Hello React</h1>,
    	// 	document.getElementById("container")
    	// );
    
    	/*
    		JSX入门
    
    		JSX不是一门新的语言,是个语法(语法糖)
    	*/
    
    	// 1.JSX必须借助React环境运行
    
    	// 2.JSX标签其实就是HTML标签,只不过我们在JavaScript中书写这些标签的时候,不用使用""括起来,
    	// 可以像XML一样书写
    
    	ReactDOM.render(
    		<h1>
    			Hello React
    		</h1>,
    		document.getElementById("container")
    	);
    
    	// 3.转换:JSX语法能够让我们更直观的看到组件的DOM结构,不能直接在浏览器上运行,最终会转化成JavaScript代码执行
    
    	ReactDOM.render(
    		React.createElement("h1",null,"Hello React"),
    		document.getElementById("container")
    	);
    
    	// 4.在JSX中运行JavaScript代码
    	// 使用{}括起来  {表达式}
    	//
    
    	var text = "百度";
    	ReactDOM.render(
    		<h1>{text}</h1>,
    		document.getElementById("container")
    	);
    
    	// 5.例如:属性、设置样式、事件绑定
    </script>
    </html>
    

    2.设置组件样式

    <!DOCTYPE html>
    <html lang="en">
    <head>
    	<meta charset="UTF-8">
    	<title>Document</title>
    	<!-- 1.react.js是React的核心库 -->
    	<script src="js/react.min.js" charset="utf-8"></script>
    	<!-- 2.react-dom.js的作用是提供与DOM相关的功能 -->
    	<script src="js/react-dom.min.js" charset="utf-8"></script>
    	<!-- 3.browser.min.js的作用是将JSX语法转换成JavaScript语法 -->
    	<script src="js/browser.min.js" charset="utf-8"></script>
    	<!-- <script src="https://cdnjs.cloudflare.com/ajax/libs/babel-core/5.8.24/browser.min.js" charset="utf-8"></script> -->
    
    	<style>
    		.pStyle {
    			font-size: 20px;
    		}
    	</style>
    </head>
    <body>
    	<!-- 6.React渲染的模板内容会插入到这个DOM节点中,作为一个容器 -->
    	<div id="container">
    		
    	</div>
    </body>
    <!-- 4.在React开发中,使用JSX,跟JavaScript不兼容,在使用JSX的地方,要设置type:text/babel -->
    <!-- 5.babel是一个转换编译器,ES6转成可以在浏览器中运行的代码 -->
    <script type="text/babel">
    	// 7.在此处编写React代码
    	
    	/*
    		创建一个组件类,用于输出Hello React
    
    		1.React中创建的组件类以大写字母开头,驼峰命名法
    		2.在React中使用React.createClass方法创建一个组件类
    		3.核心代码:每个组件类都必须实现自己的render方法。输出定义好的组件模板。返回值:null、false、组件模板
    		4.注意:组件类只能包含一个顶层标签             
    	*/
    
    	// var HelloMessage = React.createClass({
    	// 	render:function(){
    	// 		return <h1>Hello React</h1>;
    	// 	}
    	// });
    
    	// // 渲染
    	// ReactDOM.render(
    	// 	// 在模板中插入<HelloMessage />会自动生成一个实例
    	// 	<HelloMessage />,
    	// 	document.getElementById("container")
    	// );
    
    	/*
    		设置组件的样式,三种:
    		1.内联样式
    		2.对象样式
    		3.选择器样式
    
    		注意:在React和HTML5中设置样式时的书写格式是有区别的
    		* 1.HTML5以 ; 结尾
    			React以 , 结尾
    		* 2.HTML5中key、value都不加引号
    			React中属于JavaScript对象,key的名字不能出现"-",需要使用驼峰命名法(例:backgroundColor)。如果value为字符串,需要加引号。
    		* 3.HTML5中,value如果是数字,需要带单位
    			React中不需要带单位
    
    		* 我们定义一个组件类,同时使用三种设置组件样式的方式
    		* 需求:定义一个组件,分为上下两行显示内容
    		* <div> 内联样式:设置背景颜色,边框大小,边框颜色
    		* 	<h1></h1> 对象样式:设置背景颜色,字体颜色
    		* 	<p></p> 选择器样式:设置字体大小
    		* </div>
    		*
    		* class 和 for 是React中的保留字
    		* 注意:在React中使用选择器样式设置组件样式时,属性名不能使用class,需要使用className替换。
    		* 类似的:使用htmlFor替换for
    	*/
    
    	// 创建设置h1样式对象
    	var hStyle = {
    		backgroundColor:"green",
    		color:"red"
    	}
    	// 创建组件 通过this.props传值
    	var ShowMessage = React.createClass({
    		render:function() {
    			return (
    				// 外面的{}是JSX语法,里面的{}表示对象
    				<div style={{backgroundColor:"yellow",borderWidth:5,borderColor:"black",borderStyle:"solid"}}>
    					<h1 style={hStyle}>{this.props.firstRow}</h1>
    					<p className="pStyle">{this.props.secondRow}</p>
    				</div>
    			);
    		}
    	});
    
    	ReactDOM.render(
    		<ShowMessage firstRow="你好" secondRow="世界" />,
    		document.getElementById("container")
    	);
    </script>
    </html>
    

    3.复合组件

    <!DOCTYPE html>
    <html lang="en">
    <head>
    	<meta charset="UTF-8">
    	<title>Document</title>
    	<!-- 1.react.js是React的核心库 -->
    	<script src="js/react.min.js" charset="utf-8"></script>
    	<!-- 2.react-dom.js的作用是提供与DOM相关的功能 -->
    	<script src="js/react-dom.min.js" charset="utf-8"></script>
    	<!-- 3.browser.min.js的作用是将JSX语法转换成JavaScript语法 -->
    	<script src="js/browser.min.js" charset="utf-8"></script>
    	<!-- <script src="https://cdnjs.cloudflare.com/ajax/libs/babel-core/5.8.24/browser.min.js" charset="utf-8"></script> -->
    </head>
    <body>
    	<!-- 6.React渲染的模板内容会插入到这个DOM节点中,作为一个容器 -->
    	<div id="container">
    		
    	</div>
    </body>
    <!-- 4.在React开发中,使用JSX,跟JavaScript不兼容,在使用JSX的地方,要设置type:text/babel -->
    <!-- 5.babel是一个转换编译器,ES6转成可以在浏览器中运行的代码 -->
    <script type="text/babel">
    	// 7.在此处编写React代码
    
    	/*
    		复合组件
    
    		也被称为组合组件,创建多个组件合成一个组件。
    	*/
    
    	/*
    		定义一个组件WebShow。功能:输出网站的名字和网址,网址是一个可以点击的链接。
    		分析:定义一个组件WebName负责输出网站名字,定义组件WebLink显示网站的网址,兵器可以点击
    	*/
    
    	// 定义WebName组件
    	var WebName = React.createClass({
    		render:function() {
    			return <h1>百度</h1>;
    		}
    	});
    
    	// 定义WebLink组件
    	var WebLink = React.createClass({
    		render:function() {
    			return <a href="http://www.baidu.com">http://www.baidu.com</a>;
    		}
    	});
    
    	// 定义复合组件 WebShow
    	var WebShow = React.createClass({
    		render:function() {
    			return (
    				// 嵌套组件
    				<div>
    					<WebName />
    					<WebLink />
    				</div>
    			);
    		}
    	});
    
    	// 将组件类WebShow渲染到网页上
    	ReactDOM.render(
    		<WebShow />,
    		document.getElementById("container")
    	);
    </script>
    </html>
    

    4.props 传值

    <!DOCTYPE html>
    <html lang="en">
    <head>
    	<meta charset="UTF-8">
    	<title>Document</title>
    	<!-- 1.react.js是React的核心库 -->
    	<script src="js/react.min.js" charset="utf-8"></script>
    	<!-- 2.react-dom.js的作用是提供与DOM相关的功能 -->
    	<script src="js/react-dom.min.js" charset="utf-8"></script>
    	<!-- 3.browser.min.js的作用是将JSX语法转换成JavaScript语法 -->
    	<script src="js/browser.min.js" charset="utf-8"></script>
    	<!-- <script src="https://cdnjs.cloudflare.com/ajax/libs/babel-core/5.8.24/browser.min.js" charset="utf-8"></script> -->
    </head>
    <body>
    	<!-- 6.React渲染的模板内容会插入到这个DOM节点中,作为一个容器 -->
    	<div id="container">
    		
    	</div>
    </body>
    <!-- 4.在React开发中,使用JSX,跟JavaScript不兼容,在使用JSX的地方,要设置type:text/babel -->
    <!-- 5.babel是一个转换编译器,ES6转成可以在浏览器中运行的代码 -->
    <script type="text/babel">
    	// 7.在此处编写React代码
    	/*
    		props、state
    		props是组件自身的属性,一般用于嵌套的内外层组件中,负责传递信息(通常是由父层组件向子层组件传递)
    		注意:props对象中属性与组件的属性一一对应,不要直接去修改props中属性的值
    	*/
    
    	/*
    		定义一个组件WebShow。功能:输出网站的名称和地址,网址是一个可以点击的链接
    		分析:定义一个组件WebName负责输出网站名字,定义组件WebLink显示网站的网址,并且可以点击
    
    		思路:
    		1.给WebShow设置两个属性,wname,wlink
    		2.WebShow的props对象增加了两个属性值
    		3.WebName从WebShow的props对象中获取wname的值,即网站的名称。
    	*/
    
    	// 定义WebName
    	var WebName = React.createClass({
    		render:function() {
    			return <h1>{this.props.webname}</h1>;
    		}
    	});
    
    	// 定义WebLink
    	var WebLink = React.createClass({
    		render:function() {
    			return <a href={this.props.weblink}>{this.props.weblink}</a>;
    		}
    	});
    
    	// 定义WebShow
    	var WebShow = React.createClass({
    		render:function() {
    			return (
    				<div>
    					<WebName webname={this.props.wname} />
    					<WebLink weblink={this.props.wlink} />
    				</div>
    			);
    		}
    	});
    
    	// 渲染
    	ReactDOM.render(
    		<WebShow wname="百度" wlink="http://www.baidu.com" />,
    		document.getElementById("container")
    	);
    
    	/*
    		...this.props
    		props提供的语法糖,可以将父组件中的全部属性都复制给子组件
    
    		需求:定义一个组件Link,Link组件中只包含一个<a>,我们不给<a>设置任何属性,所有属性全部从父组件复制得到
    	*/
    
    	var Link = React.createClass({
    		render:function(){
    			return <a {...this.props}>{this.props.name}</a>;
    		}
    	});
    
    	ReactDOM.render(
    		<Link href="http://www.baidu.com" name="百度" />,
    		document.getElementById("container")
    	);
    
    	/*
    		this.props.children
    
    		children是一个例外,不是跟组件的属性对应的。
    		表示组件的所有子节点
    
    		HTML5中有一种标签:列表<ul> <ol> <li>
    
    		定义一个列表组件,列表项中显示的内容,以及列表项的数量都由外部决定
    	*/
    
    	var ListComponent = React.createClass({
    		render:function() {
    			return (
    				<ul>
    					{
    						/*
    							列表项数量以及内容不确定,在创建模板时才能确定
    							利用this.props.children从父组件获取需要展示的列表项内容
    
    							获取到列表项内容后,需要遍历children,逐项进行设置
    							使用React.Children.map方法
    							返回值:数组对象。这里数组中的元素是<li>
    						*/
    						React.Children.map(this.props.children, function(child) {
    							// child是遍历得到的父组件的子节点
    							return <li>{child}</li>
    						})
    					}
    				</ul>
    			);
    		}
    	});
    
    	ReactDOM.render(
    		(
    			<ListComponent>
    				<h1>百度</h1>
    				<a href="http://www.baidu.com">http://www.baidu.com</a>
    			</ListComponent>
    		),
    		document.getElementById("container")
    	);
    
    	/*
    		属性验证 propTypes
    
    		组件类的属性
    
    		用于验证组件实例的属性是否符合要求
    	*/
    
    	var ShowTitle = React.createClass({
    		propTypes: {
    			// title 数据类型必须为字符串
    			title: React.PropTypes.string.isRequired
    		},
    		render:function() {
    			return <h1>{this.props.title}</h1>
    		}
    	});
    
    	ReactDOM.render(
    		<ShowTitle title="123" />,
    		document.getElementById("container")
    	);
    
    	/*
    		设置组件属性的默认值
    
    		通过实现组件的getDefaultProps方法,对属性设置默认值
    	*/
    
    	var MyTitle = React.createClass({
    		getDefaultProps:function() {
    			return {
    				title:"百度"
    			}
    		},
    		render:function() {
    			return <h1>{this.props.title}</h1>;
    		}
    	});
    
    	ReactDOM.render(
    		<MyTitle />,
    		document.getElementById("container")
    	);
    </script>
    </html>
    

    5.state管理 及 事件绑定

    <!DOCTYPE html>
    <html lang="en">
    <head>
    	<meta charset="UTF-8">
    	<title>Document</title>
    	<!-- 1.react.js是React的核心库 -->
    	<script src="js/react.min.js" charset="utf-8"></script>
    	<!-- 2.react-dom.js的作用是提供与DOM相关的功能 -->
    	<script src="js/react-dom.min.js" charset="utf-8"></script>
    	<!-- 3.browser.min.js的作用是将JSX语法转换成JavaScript语法 -->
    	<script src="js/browser.min.js" charset="utf-8"></script>
    	<!-- <script src="https://cdnjs.cloudflare.com/ajax/libs/babel-core/5.8.24/browser.min.js" charset="utf-8"></script> -->
    </head>
    <body>
    	<!-- 6.React渲染的模板内容会插入到这个DOM节点中,作为一个容器 -->
    	<div id="container">
    		
    	</div>
    </body>
    <!-- 4.在React开发中,使用JSX,跟JavaScript不兼容,在使用JSX的地方,要设置type:text/babel -->
    <!-- 5.babel是一个转换编译器,ES6转成可以在浏览器中运行的代码 -->
    <script type="text/babel">
    	// 7.在此处编写React代码
    	
    	/*
    		事件处理
    
    		react中的事件名称,首字母小写,驼峰命名法
    
    		案例:定义组件,组件中包含一个button,给button绑定onClick事件
    	*/
    	var MyButton = React.createClass({
    		handleClick:function(){
    			alert("点击按钮触发的效果");
    		},
    		render:function(){
    			return (
    				<button onClick={this.handleClick}>{this.props.buttonTitle}</button>
    			);
    		}
    	});
    
    	ReactDOM.render(
    		<MyButton buttonTitle="按钮" />,
    		document.getElementById("container")
    	);
    
    	/*
    		state 状态
    		props 
    		组件自身的属性
    
    		this.state
    	*/
    
    	// 需求:创建一个CheckButton的组件,包含一个checkbox类型 <input>
    	// 复选框在选中和未选中两种状态下会显示不同的文字。即根据状态渲染。
    
    	var CheckButton = React.createClass({
    		// 定义初始状态
    		getInitialState:function() {
    			return {
    				// 返回的是一个对象 里面包含设置的状态 和 初始值
    				// 在这个对象中设置的属性,将会储存在state中
    				// 默认状态,未选中
    				isCheck: false
    			}
    		},
    		// 定义事件绑定的方法
    		handleChange:function() {
    			// 修改状态值,通过this.state读取设置的状态值
    			this.setState({
    				isCheck:!this.state.isCheck
    			});
    		},
    		render:function(){
    			// 根据状态值,设置显示的文字
    			// 注:在JSX语法中,不能直接使用if else,使用三目运算符
    			var text = this.state.isCheck ? "已选中" : "未选中";
    			return (
    				<div>
    					<input type="checkbox" onChange={this.handleChange} />
    					{text}
    				</div>
    			);
    		}
    	});
    
    	ReactDOM.render(
    		<CheckButton />,
    		document.getElementById("container")
    	);
    
    	/*
    		需求:定义一个组件,将用户在输入框内输入的内容进行实时显示
    
    		分析:
    		组件与用户交互过程中,存在状态的变化,即输入框的值
    	*/
    
    	var Input = React.createClass({
    		getInitialState:function() {
    			return {
    				value:"请输入"
    			};
    		},
    		handleChange:function(event) {
    			// 通过event.target.value读取用户输入的值
    			this.setState({
    				value: event.target.value
    			});
    		},
    		render:function() {
    			var value = this.state.value;
    			return (
    				<div>
    					<input type="text" value={value} onChange={this.handleChange} />
    					<p>{value}</p>
    				</div>
    			);
    		}
    	});
    
    	ReactDOM.render(
    		<Input />,
    		document.getElementById("container")
    	);
    </script>
    </html>
    

    6.react 生命周期

    <!DOCTYPE html>
    <html lang="en">
    <head>
    	<meta charset="UTF-8">
    	<title>Document</title>
    	<!-- 1.react.js是React的核心库 -->
    	<script src="js/react.min.js" charset="utf-8"></script>
    	<!-- 2.react-dom.js的作用是提供与DOM相关的功能 -->
    	<script src="js/react-dom.min.js" charset="utf-8"></script>
    	<!-- 3.browser.min.js的作用是将JSX语法转换成JavaScript语法 -->
    	<script src="js/browser.min.js" charset="utf-8"></script>
    	<!-- <script src="https://cdnjs.cloudflare.com/ajax/libs/babel-core/5.8.24/browser.min.js" charset="utf-8"></script> -->
    </head>
    <body>
    	<!-- 6.React渲染的模板内容会插入到这个DOM节点中,作为一个容器 -->
    	<div id="container">
    		
    	</div>
    </body>
    <!-- 4.在React开发中,使用JSX,跟JavaScript不兼容,在使用JSX的地方,要设置type:text/babel -->
    <!-- 5.babel是一个转换编译器,ES6转成可以在浏览器中运行的代码 -->
    <script type="text/babel">
    	// 7.在此处编写React代码
    	
    	/*
    		生命周期介绍:
    
    		1.组件的生命周期可分成三个状态:
    			Mounting:组件挂载,已插入真实 DOM
    			Updating:组件更新,正在被重新渲染
    			Unmounting:组件移出,已移出真实 DOM
    		
    		2.组件的生命周期可分成四个阶段:
    			创建、实例化、更新、销毁
    
    		3.网页新闻列表页面
    	*/
    
    	/*
    		1.Mounting/组件挂载相关:
    			(1) componentWillMount
    			组件将要挂载。在render之前执行,但仅执行一次,即使多次重复渲染该组件,或者改变了组件的state
    			(2) componentDidMount
    			组件已经挂载。在render之后执行,同一个组件重复渲染只执行一次
    
    		2.Updating/组件更新相关:
    			(1) componentWillReceiveProps(object nextProps)
    			已加载组件收到新的props之前调用,注意组件初始化渲染时则不会执行
    			(2) shouldComponentUpdate(object nextProps,object nextState)
    			组件判断是否重新渲染时调用。该接口实际是在组件接收到新的 props 或者新的 state 的时候 会立即调用,然后通过
    			(3) componentWillUpdate(object nextProps,object nextState)
    			组件将要更新
    			(4) componentDidUpdate(object prevProps,object prevState)
    			组件已经更新
    
    		3.Unmounting/组件移除相关:
    			(1) componentWillUnmount
    			在组件要被移除之前的时间点触发,可以利用该方法来执行一些必要的清理组件将要移除
    
    		4.生命周期中与props和state相关:
    			(1) getDefaultProps 设置props属性默认值
    			(2) getInitialState 设置state属性初始值
    	*/
    
    	/*
    		生命周期各阶段介绍
    	*/
    	var Demo = React.createClass({
    		/*
    			一、创建阶段
    			流程:
    				只调用getDefaultProps方法
    		*/
    		getDefaultProps:function() {
    			// 在创建类的时候被调用,设置this.props的默认值
    			console.log("getDefaultProps--创建组件,设置this.props默认值");
    			return {}
    		},
    
    		/*
    			二、实例化阶段
    			流程:
    				getInitialState
    				componentWillMount
    				render
    				componentDidMount
    		*/
    		getInitialState:function() {
    			// 设置this.state的默认值
    			console.log("getInitialState--实例化组件,设置this.state的默认值");
    			return null;
    		},
    		componentWillMount:function() {
    			// 在render之前调用
    			console.log("componentWillMount--组件将要挂载");
    		},
    		render:function() {
    			// 渲染并返回一个虚拟DOM
    			console.log("render--渲染组件");
    			return <div>Hello React</div>
    		},
    		componentDidMount:function() {
    			// 在render之后调用
    			// 在该方法中,React会使用render方法返回的虚拟DOM对象创建真实的DOM结构
    			// 可以在这个方法中读取DOM节点
    			console.log("componentDidMount--组件已经挂载");
    		},
    
    		/*
    			三、更新阶段
    			流程:
    				componentWillReceiveProps
    				shouldComponentUpdate 如果返回值是false,后三个方法不执行
    				componentWillUpdate
    				render
    				componentDidUpdate
    		*/
    
    		componentWillReceiveProps:function() {
    			console.log("componentWillReceiveProps--已加载组件收到新的props之前调用");
    		},
    		shouldComponentUpdate:function() {
    			// 是否需要更新
    			console.log("shouldComponentUpdate--组件判断是否重新渲染时调用");
    			return true;
    		},
    		componentWillUpdate:function() {
    			console.log("componentWillUpdate--组件将要更新");
    		},
    		componentDidUpdate:function() {
    			console.log("componentDidUpdate--组件已经更新");
    		},
    		/*
    			四、销毁阶段
    			流程:
    				componentWillUnmount
    		*/
    		componentWillUnmount:function() {
    			console.log("componentWillUnmount--在组件要被移除之前的时间点触发");
    		}
    	});
    
    	// 第一次创建并加载组件
    	ReactDOM.render(
    		<Demo />,
    		document.getElementById("container")
    	);
    
    	// 重新渲染组件
    	ReactDOM.render(
    		<Demo />,
    		document.getElementById("container")
    	);
    
    	// 移除组件
    	ReactDOM.unmountComponentAtNode(document.getElementById("container"));
    </script>
    </html>
    

    7.index.android.js 详解

    /**
     * Sample React Native App
     * https://github.com/facebook/react-native
     * @flow
     */
    
    /*
      第一部分
    
      导入ReactNative包,导入ReactNative组件
      AppRegistry: JS运行所有ReactNative应用的入口。
      StyleSheet:ReactNative中使用的样式表,类似CSS样式表
      各种开发中需要使用的组件
    
      模板中使用的是ES6语法,ES5语法如下:
      let React = require("react-native");
      let {
        AppRegistry,
        StyleSheet,
        Text,
        View
      } = React;
      
      require函数,搜索目录加载文件
    */
    
    import React, { Component } from 'react';
    import {
      AppRegistry,
      StyleSheet,
      Text,
      View
    } from 'react-native';
    
    /*
      第二部分
    
      创建ReactNative组件
    
      模板中使用的是ES6语法,
      render() {} 是ES6中的函数简写
    
      ES5语法如下:
    
      var Market = React.createClass({
        render:function(){
          return {};
        }
      });
    */
    
    export default class Market extends Component { // 继承market这个类
      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,{'
    '}
              Shake or press menu button for dev menu
            </Text>
          </View>
        );
      }
    }
    
    /*
      第三部分
    
      StyleSheet.create创建样式实例
      在应用中只会被创建一次,不用每次在渲染周期中重新创建
    */
    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:负责注册运行ReactNative应用程序的JavaScript入口
      registerComponent注册应用程序的入口组件。告知ReactNative哪一个组件被注册为应用的根容器
    
      第二个参数使用了ES6语法,箭头函数:
      () => Market
      返回的必须是定义的组件类的名字
    
      等价于
      function() {return Market}
    */
    
    AppRegistry.registerComponent('Market', () => Market); // 注册
    

    .

  • 相关阅读:
    h.264的POC计算(转载)
    如何从kernel源码中查出版本号(转载)
    git切换分支保存修改的代码的方法(转载)
    【转载】Gradle for Android 第二篇( Build.gradle入门 )
    【转】gradle for android 第一篇
    android studio学习----android studio断点调试
    maven 学习---Maven配置之pom文件配置包含和排除测试
    maven 学习---Maven 编译打包时如何忽略测试用例
    android studio学习----gradle多渠道打包
    android studio学习----gradle命令详解
  • 原文地址:https://www.cnblogs.com/crazycode2/p/7140531.html
Copyright © 2020-2023  润新知