入门React-Native世界
接触React-Native有一段时间了,本篇博客讲下我对RN的理解,以及入门RN必须要了解的一些基础知识。文中也会贴上一些我认为写得很好的博客链接,也是对自己学习的知识一个总结。话不多说,直接开始吧。 React特点说到RN,首先要讲React,React是facebook2013年出来的一个新产物。2013年有了RN的ios版,但直到2015年有了RN for android,RN用在移动开发中才开始火起来。入门React.js可以看下这个链接React入门实战教程。那么React有什么特点呢,下面大概说一下。 虚拟DOM提到React最先想到的就是虚拟DOM。因为这个想法实现是太好了。简而言之就是,React中UI界面是一棵DOM树,对应的我们创建一个全局唯一的数据模型,每次数据模型有任何变化,都将整个数据模型应用到UI DOM树上,由React来负责去更新需要更新的界面部分。 JSX定义界面JSX是React的核心组成部分,它使用XML标记的方式去直接声明界面,将HTML直接嵌入到JavaScript代码中。看下示例代码: var React = require(‘React’);
var message =
<div class=“hello”>
<span>Hello World</span>
</div>;
React.renderComponent(message,document.body);
很奇怪的写法。但是确很直观,开发起来也很快。不需要过多考虑模板的概念,只需要考虑如何用代码构建整个界面。 单向数据流React本身只是View层,对于事件传输层FB建议使用Flux这种单向传输架构。Flux 是一种架构思想,它分为View(视图层)、Action(动作)、Dispatcher(派发器)、Store(数据层)四层。数据流的流向参考下图: 独特的数据模型React的所有数据都是只读的,如果需要修改它,那么你只能产生一份包含新的修改的数据。这样做是为了让代码更加的安全和易于维护。React将用户界面看做简单的状态机器。当组件处于某个状态时,那么就输出这个状态对应的界面。在React中,只要简单的去更新某个组件的状态,React就公以最高效的方式去比较两个界面并更新DOM树。 React-Native生命周期与Activity类似,RN也有自己的生命周期。先看下我在网上找的一张生命周期图,很完整:
React-Native的JSX用法'use strict'
import React,{
Image,StyleSheet,Text,View,Dimensions,} from 'react-native';
var GuideActivity = require('./js/GuideActivity');
var SplashScreen = React.createClass({
getInitialState: function() {
return {
cover: null,};
},componentDidMount: function() {
....
},render: function() {
var img,text;
img = require('./../guide.jpg');
text = 'srdb';
return(
<View style={styles.container}> <Text style={styles.text}> {text} </Text> </View> ); } }); var styles = StyleSheet.create({ container: { flex: 1,flexDirection: 'column',},text: { flex: 1,fontSize: 16,textAlign: 'center',color: 'white',position: 'absolute',left: 0,right: 0,bottom: 10,backgroundColor: 'transparent',} }); module.exports = SplashScreen;
以上就是最简单的jsx代码。麻雀虽小,五脏俱全。 import React,} from 'react-native';
上面代码用于声明要用到的组件,如用到View,Text组件就要手动导入。这里声明的是系统己有的组件。 var GuideActivity = require('./js/GuideActivity');
上面代码用于导入你自己Js文件,GuideActivity 相当于是一个组件。 var SplashScreen = React.createClass({
render: function() {
return(
);
}
});
上面是必不可少的代码,你写的界面渲染就在render里面。Jsx语法就是遇到xml以()包括起,遇到js代码以{}括起。如果需要初始化等,就在React.createClass中调用相应的生命周期函数。看上面代码。 <View style={styles.container}>
<Text style={styles.text}>
{text}
</Text>
</View>
上面就是布局,结构的语就是html写的,RN与react.js不同的是,react是DOM操作,RN是组件操作。View,Text都是组件。样式的话用定义如下: var styles = StyleSheet.create({ container: { flex: 1,flexDirection: 'column',});
最后导出你写的组件。 module.exports = SplashScreen;
这样就可以在其它文件中引用了。 先写到这吧。接下来博客会更新一些RN相关的知识。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |