- 【强制】 代码中初始化state因在constructor(props)函数中,而且尽量对每个变量进行注释;
- 【强制】 代码中使用setState时,因注意异步可能导致的问题,尽量使用回调函数;
```
this.setState({
//todo
},()=>{
//执行setState后执行此函数
})
```
- 【强制】 代码中使用props时,需进行propTypes检测和defaultProps默认值初始化;
```
static propTypes = {
color: PropTypes.string,
dotRadius: PropTypes.number,
size: PropTypes.number
};
static defaultProps = {
color: '#1e90ff',
dotRadius: 10,
size: 40
};
```
- 【强制】 代码中用于页面展示处理UI的组件,命名以Page结尾,自定义组件命名中必须包含Component; 例子:
```
LoginController 登录页
BtuuonComponent 按钮组件
```
- 【强制】代码中创建数组或对象使用以下方式;
```
const user = {
name:'time',
sex:'男',
age:25,
};
const itemArray = ['0','1','2',3,{name:'25',age:'男'}];
```
- 【强制】代码中函数绑定this,强制使用箭头函数; 注:除组件原有方法,其他自定义函数命名时,需使用箭头函数;
```
// 系统组件生命周期方法
constructor(props) {
super(props);
};
// 自定义方法
goMainPage=()=> {
};
```
- 【推荐】代码中一些网络数据初始化,配置信息,推荐在此生命周期进行初始化;
```
componentWillMount
```
- 【强制】代码中使用定时器或者DeviceEventEmitter,必须在组件卸载进行销毁或者清除;
```
componentDidMount() {
//注意addListener的key和emit的key保持一致
this.msgListener = DeviceEventEmitter.addListener('Msg',(listenerMsg) => {
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);
}
```