- 【強制】 代碼中初始化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);
}
```