设为首页 加入收藏

TOP

React Native中的约束规范(三)
2017-10-11 14:01:12 】 浏览:7955
Tags:React Native 约束 规范
> { this.setState({ listenerMsg:listenerMsg, }) }); } goMainPage=()=>{ this.timer = setTimeout( () => { console.log('把一个定时器的引用挂在this上'); }, 500 ); }; componentWillUnmount() { //此生命周期内,去掉监听和定时器 this.msgListener&&this.msgListener.remove(); // 如果存在this.timer,则使用clearTimeout清空。 // 如果你使用多个timer,那么用多个变量,或者用个数组来保存引用,然后逐个clear this.timer && clearTimeout(this.timer); }

9.【强制】使用本地图片资源时,需设置宽高并进行适当适配;

 imgHeight=screenHeight, imgWidth= screenWidth 

10.【强制】在React-Native版本小于0.46.0使用本地图片资源时,当不指定特殊尺寸图片时,需引入不同尺寸XX.png,XX2@.png,XX3@.png图片,并在代码引用中,使用如下方式:

<Image style={{flex: 1, height: screenHeight, width: screenWidth}} source={require('../XX.png')}> 

说明:当使用XX.png时,程序运行过程中会根据不同屏幕尺寸获取不同资源;当使用如下方式:

<Image style={{flex: 1, height: screenHeight, width: screenWidth}} source={require('../XX2@.png')}> 

时,程序运行过程中不会根据不同屏幕尺寸获取不同资源。 注意:此方式适用于React-Native0.46.0版本之前。

9.【强制】在React-Native版本大于0.46.0使用本地资源,图片命名不能出现‘@’符号: 说明:不同大小图片需要原生不同的尺寸文件夹,系统自动进行不同适配。

###(二) 样式

  1. 【强制】 当组件使用样式属性达到三个或者三个以上时,必须使用StyleSheet来创建样式属性并进行引用;

     const styles = StyleSheet.create({ container: { flex: 1, justifyContent: 'center', alignItems: 'center', backgroundColor: '#F5FCFF', marginTop:10, }, }); 
  2. 【推荐】 当使用单一属性,或者全局样式属性时,推荐使用公共样式类;

     //StyleCommon.js module.exports={ topColor:{ backgroundColor: '#3A3D42', }, mainView:{ backgroundColor: '#12141B', }, } 
  3. 【推荐】 当使用多个state或者props值时,推荐使用以下方式;

     const {size, dotRadius, color} = this.props; const { maxNumber,minNumber,}=this.state; 

说明使用此方式,代码结构清晰简洁,便于维护;

###(三) var,let,const

  1. 【强制】对所有变量,对象的引用,使用const,不要使用var;
  2. 【推荐】如果一定需要引用可变动的变量,对象,建议使用let代替var;

###(四) 代码间隔

  1. 【强制】使用ES6编写代码,定义方法时,每个方法结尾使用‘;’进行分隔;

###(五) 其他

  1. 【强制】对组件引用,变量引用,需遵从以下方式;

     import React, {Component} from 'react'; import{ View, Text, TouchableHighlight, Image, StyleSheet, InteractionManager, } from 'react-native'; //from react,react-native优先; //from npm库其次; import { connect } from 'react-redux'; //from 项目内组件其次; import LoadingAndTime from '../component/LoadingAndTime'; import { performLoginAction } from '../action/LoginAction' import {encode} from '../common/Base64'; //变量初始化,常量初始化 最后; let screenWidth = Dimensions.get('window').width; let screenHeight = Dimensions.get('window').height; let typeCode = Platform.OS == 'android' ? 'android-phone' : 'ios-phone' let selectColor=Platform.OS=='android'?null:'white' 
  2. 【推荐】对组件引用,变量初始化等,在整个页面或组件内未使用,因去除相关代码;


##三、编码约定

###(一)入口文件

1.【推荐】统一入口文件为App.js; 说明:在index.android.js和index.ios.js文件中,统一入口文件为App.js,且保持所在目录和index.android.js和index.ios.js同级。

2.【强制】开发中,不要使用任何后端的开发模式来构建APP结构,如使用MVC,MVP,MVVM等开发模式,React-Native推荐组件化,颗粒化,以上设计模式严重违背。若使用Redux,Mobx等数据流第三方,可依据第三方结构编写构建App。

###(二) 模版文件

1.【推荐】根据附件,配置代码编写模版,推荐使用第二种配置方式,可配置多种模版。


##四、自定义组件 (一) 自定义组件

  1. 【强制】组件命名中必须包含Component; 说明:

    ButtonComponent.js LabelComponent.js

  2. 【强制】组件中定义的state和props必须都要有注释,依次说明每个值的含义;

  3. 【强制】在每个类的头部注释中,必须使用/**/说明此组件的基础使用方式以及特殊使用方法;

(二) 属性判断

  1. 【强制】代码中使用props时,需进行propTypes检测和defaultProps默认值初始化;

    static propTypes = { color: PropTypes.string, dotRadius: PropTypes.number, size: PropTypes.number };

    static defaultProps = { color: '#1e90ff', dotRadius: 10, size: 40 };

(三) 性能优化

  1. 【强制】无状态组件需使用PureComponent而不是Component; 说明:无状态组件是指内部没有使用state的组件,但是可以使用props来进行某些属性控制;

    export default class LinkButton

首页 上一页 1 2 3 4 下一页 尾页 3/4/4
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇react native进阶 下一篇Ionic3 环境搭建以及基础配置实现..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目