变量保护
出现最多的就是在使用redux来做数据层,使用this.props的属性没有去查询时候为undefined,这种情况,基本是必crash
比如下例:
//show user name
<Text>{this.props.userInfo.name}</Text>
如果userInfo为undefined的话,就会崩溃,错误如下:
TypeError: Cannot read property ‘name’ of undefined
在这里name为undefined的时候反而没有问题,因为name是一个简单的属性,直接赋值给Text是没有问题的。
那如何避免这种问题呢?在赋值前加下判断会比较好:
let name = this.props.userInfo && this.props.userInfo.name ? this.props.userInfo.name : '';
//show user name
<Text>{
this.props.userInfo.name}</Text>
这样基本可以避免崩溃的问题了。
但是如果都这样判断,实际是比较复杂的,所以如果你的业务比较简单,我建议可以直接在render做一个大的保护,即没有数据的时候,不去render这些业务内容.
思路如下:
render(){
if(!this.props.userInfo){
return (
<EmptyView />