React Native组件间通信
React Native组件间通信
React Native组件的关系有:父子关系、无直接关系。组件间通信主要针对这两类来讨论。
一、父组件和子组件之间通信
父组件向子组件传递消息、数据通过对子组件的属性赋值来实现。比如styles属性、placeholder属性等。
子组件向父组件传递消息、数据通过回调父组件传递给自己的回调函数来实现。回调函数由父组件设置,被保存在子组件的某个属性中。
二、无直接关系的组件之间通信
无直接关系的组件之间通信是通过本地数据的存储和读取来完成。
2.1 AsyncStorage
AsyncStorage与localStorage类似,存储的数据是永久存储,不会因为退出A应用而自动删除数据。
AsyncStorage不提供索引、排序等数据库中经常使用的功能。它只是一个简单的、异步的“键值对”(key - value)存储系统,开发者可以用它来取代Android的sharedperference和IOS的NSUserDefaults。通过AsyncStorage的静态方法,数据会保存到手机存储空间中。开发者不需要指定,也不需要关心数据保存在了什么文件或者数据库、表中,AsyncStorage存储的数据对该React Native应用都是全局可访问的,开发这只需要知道能通过AsyncStorage增、删、改、查数据就可以了。
2.1.1 写入数据
写入一组数据:
AsyncStorage.setItem('key', 'value').then(
() =>{
//这里写当数据保存成功后需要做的操作
},
(error) =>{
//这里写操作失败的处理
}
);
写入多组数据:
AsyncStorage.setItem( [ ['key1', 'value2'],['key2' , 'value2'] ]).then(
() =>{
//这里写当数据保存成功后需要做的操作
}).catch( (errors) => {
if(errors.length > 0){ //保存操作有异常
}
else { //异常不是数据,有可能是成功操作的处理函数抛出的异常
}
});
2.1.2 读取数据
读取指定key的value:
AsyncStorage.getItem('key').then(
(result) => {
if(result === null){
//存储中没有指定键对应的值
return ;
}
//读取成功的操作
}
).catch((error) =>{
//读取失败的操作
});
读取多组数据:
AsyncStorage.multiGet(['key1', 'key2']).then(
(results) => {
console.log(results[0][0]); //key1
console.log(results[0][1]); //value1
console.log(results[1][0]); //key1
console.log(results[1][1]); //value2
}
).catch((error) =>{
//读取失败的操作
});
2.1.3 删除数据
删除单个数据:
AsyncStorage.removeItem('key', 'value').then(
() =>{
//这里写当数据删除成功后需要做的操作
},
(error) =>{
//这里写操作失败的处理
}
);
删除多组数据:
AsyncStorage.multiRemove( ['key1', 'value2'] ).then(
() =>{
//这里写当数据删除成功后需要做的操作
}).catch( (errors) => {
if(errors.length > 0){ //保存操作有异常
}
else { //成功操作的处理函数抛出的异常
}
});
删除所有数据:
AsyncStorage.clear().then(
()=>{
//数据全部删除成功的操作
}
).catch((error) =>{
//操作失败或者成功处理抛出异常
})
2.2 JSON对象
读取JSON文件:
let data = require('./data/myData.json');
将JSON对象转化为字符串:
let jsonString = JSON.stringify(data);
将字符串转化为JSON对象:
let data11 = JSON.parse(jsonString);
JSON类的parse函数要求严格,不允许有尾逗号。
JSON.parse('{"phone":"13838389438",}');
上面的代码会抛出异常。
使用AsyncStorage来保存数据,只能保存一个字符串类型的数据。前后两次保存相同的key值,后一次会覆盖上一次的数据。在应用中,可以配合使用AsyncStorage和JSON。
React Native组件间通信的更多相关文章
- React的组件间通信
一.React的单向数据流 React是单向数据流,数据主要从父节点传递到子节点(通过props).如果顶层(父级)的某个props改变了,React会重渲染所有的子节点.这通常被称为“自顶向下”或“ ...
- React中组件间通信的方式
React中组件间通信的方式 React中组件间通信包括父子组件.兄弟组件.隔代组件.非嵌套组件之间通信. Props props适用于父子组件的通信,props以单向数据流的形式可以很好的完成父子组 ...
- React独立组件间通信联动
React是现在主流的高效的前端框架,其官方文档 http://reactjs.cn/react/docs/getting-started.html 在介绍组件间通信时只给出了父子组件间通信的方法,而 ...
- [转] React 中组件间通信的几种方式
在使用 React 的过程中,不可避免的需要组件间进行消息传递(通信),组件间通信大体有下面几种情况: 父组件向子组件通信 子组件向父组件通信 跨级组件之间通信 非嵌套组件间通信 下面依次说下这几种通 ...
- React 中组件间通信的几种方式
在使用 React 的过程中,不可避免的需要组件间进行消息传递(通信),组件间通信大体有下面几种情况: 父组件向子组件通信 子组件向父组件通信 非嵌套组件间通信 跨级组件之间通信 1.父组件向子组件通 ...
- React 精要面试题讲解(二) 组件间通信详解
单向数据流与组件间通信 上文我们已经讲述过,react 单向数据流的原理和简单模拟实现.结合上文中的代码,我们来进行这节面试题的讲解: react中的组件间通信. 那么,首先我们把看上文中的原生js代 ...
- React 组件间通信介绍
React 组件间通信方式简介 React 组件间通信主要分为以下四种情况: 父组件向子组件通信 子组件向父组件通信 跨级组件之间通信 非嵌套组件间通信 下面对这四种情况分别进行介绍: 父组件向子 ...
- vue 和 react 组件间通信方法对比
vue 和 react 组件间通信方法对比: 通信路径 vue的方法 react的方法 父组件 => 子组件 props(推荐).slot(推荐).this.$refs.this.$childr ...
- react系列(三)组件间通信
组件间通信 React的基本组件元素是一个个组件,组件之间可能存在关联.组合等关系.不同的组件之间,经常会发生数据传递或者交换,我们称之为组件间通信. 根据传递的复杂程度,可以分为三种情况: 父子间通 ...
随机推荐
- Spring的Java配置方式
Java配置是Spring4.x推荐的配置方式,可以完全替代xml配置. 1 @Configuration 和 @Bean Spring的Java配置方式是通过 @Configuration ...
- 洛谷(cogs 1293/bzoj 1212) P2292 [HNOI2004]L语言
1293. [HNOI2004] L语言 ★★★ 输入文件:language.in 输出文件:language.out 简单对比时间限制:1 s 内存限制:162 MB [题目描述] ...
- Ubuntu 16.04设置开机关机时显示命令详细信息不显示进度条Logo
1.编辑grub文件 sudo gedit /etc/default/grub 把 GRUB_CMDLINE_LINUX_DEFAULT="quiet splash" 改成 GRU ...
- Ubuntu 16.04通过Unity Tweak Tool实现点击图标最小化
1.通过Ubuntu软件中心安装Unity Tweak Tool 2.设置
- iOS----四方块 动画button实现
突然想起来上一次面试考官提问的一个问题:怎样创建一个菱形,并让它对应单击事件.能够开合的效果. 当时第一反应使用button来填充菱形的图片来实现,只是考官说,这样点击的区域不够灵敏,毕竟button ...
- JDK部分源码阅读与理解
本文为博主原创,允许转载,但请声明原文地址:http://www.coselding.cn/article/2016/05/31/JDK部分源码阅读与理解/ 不喜欢重复造轮子,不喜欢贴各种东西.JDK ...
- CentOS-6.4-DVD系统中安装Oracle-11.2.0.4
完整版见https://jadyer.github.io/2014/05/18/centos-install-oracle/ /** * CentOS-6.4-DVD系统中安装Oracle-11.2. ...
- 大话设计模式宏观总结——创建型&结构型&行为型
师傅验收项目的时候.问大话设计模式那三种类型的差别和联系是什么,顿时我傻了眼.由于除了知道这三种类型分别如何称呼以外.从来都没想过为什么这样划分?于是,我便回答:我没想过这个问题.若是从字面上来理解的 ...
- leetcode笔记:Jump Game
一. 题目描写叙述 Given an array of non-negative integers, you are initially positioned at the first index o ...
- Mysql的简单使用(二)
接上文Mysql的简单使用(一) 字段参数以“(字段名1 数据类型1,字段名2 数据类型2,......)”的形式构建. 关于mysql常用的数据类型,一下是比较常用的几种,想查阅比较详细的资料可以自 ...