加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

#React Native#107<1>组件生命周期、数据存储

(2017-11-10 10:42:59)
分类: 计算机相关
1. 生命周期
getInitialState(),初始化state值。
getDefaultProps(),组件创建时,调用一次,为当前属性值赋值初始值。
componentWillMount(): 生命周期函数,只会被执行一次,在render()之前被调用一次,
componentDidMount():组件生命周期只执行一次,渲染后立即执行。render()之后执行。
componentWillReceiveProps(object nextProps):当组件接收到新的props会被调用一次,之后才会出发渲染render(),不需要返回值。且当RN初次渲染时,该方法不会被触发。在这里可以设置setState方法。
shouldComponentUpdate(object nextProps, object nextState),RN组件初次渲染后,RN收到新的props或者state,就要返回一个布尔值,来决定是否需要重新渲染该组件。true/false。
componentWillUpdate(object nextProps, object nextState),初始化渲染完成后,会在重新渲染组件前调用。不可以设置setState方法。
componentDidUpdate(object nextProps, object nextState),渲染完成后,组件调用这个方法。
componentWillUnMount():组件被卸载前执行的操作。在这步操作中释放资源。
2. 读取json文件
let jsonData = require("./data/example.json");
jsonData.employees来实现调用。
{
“employees”:[{name:'hah',age:23,},{name:'ha1',age:23,}]
}
3.持久化操作
RN暂不支持js文件读写,可以用AsyncStorage 来异步存储键值对的本地存储数据。
AsyncStorage 采用flow 参数检测,具体flow参数检测规则查看对应文档。形参的参数类型以及是否可以为空?问好的使用都有要求。
如果你想对一个文件进行类型检查,必须在文件头部加上一行注释; 
  
// @flow 
  // 或者下面这种 
 
// @flow type Test = { key1: ?string, key2?: number, }
一个问号是在冒号后,类型名称前;表示 Test 类型中,必须有 key1 属性,但是属性值不一定的 string,还可以是 null 或者 undefined;从另一个角度讲,只要 key1 值不是 null 和 undefined,就必须是 string 类型。
另一个问号是在冒号前,属性名后;表示 Test 类型中,可以没有 key2 属性,但是如果出现了 key2 属性,属性值必须是一个 number 类型。
AsyncStorage 使用写入数据和捕获错误方法。
AsyncStorage.setItem('name','zhangsan');
AsyncStorage.setItem('name','zhangsan',
(error)=>{
if(error!==null){
console.log(error);
 return;
}
});
AsyncStorage.setItem('name','zhangsan').then(
()=>{//成功函数操作
},
(error)=>{//错误函数操作
});
获取键值对对应的value值与之前的一样。
AscynStorage.getItem(key,callback);
AscynStorage.getItem(key).then(
(s)=>{s},
(e)=>{e});
AscynStorage.removeItem(key,callback);
AscynStorage.removeItem(key).then(
(s)=>{s},
(e)=>{e});

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有