React-Native 之 GD (八)GET 网络请求封装
1.到这里,相信各位对 React-Native 有所熟悉了吧,从现在开始我们要慢慢往实际的方向走,这边就先从网络请求这部分开始,在正式开发中,网络请求一般都单独作为一部分,我们在需要使用的地方只需要简单调用一下即可,这样做的好处是让整个 工程 的结构更加清晰,让组件们各司其职,只管好自己该管的事,并且后期维护成本也会相应降低。
首先,我们要先对 fetch 的 GET 和 POST 请求方式进行一层基础封装,也就是要把它们单独独立出来,那么这边先来看下 GET 这边:
HTTPBase.js
- /**
- * GET 网络请求封装
- */
- var HTTPBase = {};
- /**
- *
- * GET请求
- *
- * @param url
- * @param params {}包装
- * @param headers
- *
- * @return {Promise} 返回一个Promise对象
- *
- * */
- HTTPBase.get = function (url, params, headers) { // 参数
- if (params) {
- let paramsArray = [];
- // 获取 params 内所有的 key
- let paramsKeyArray = Object.keys(params);
- // 通过 forEach 方法拿到数组中每个元素,将元素与参数的值进行拼接处理,并且放入 paramsArray 中
- paramsKeyArray.forEach(key => paramsArray.push(key + '=' + params[key]));
- // 网址拼接
- if (url.search(/\?/) === -1) {
- url += '?' + paramsArray.join('&');
- }else {
- url += paramsArray.join('&');
- }
- }
- // 向外部,返回一个Promise对象
- return new Promise(function (resolve, reject) {
- fetch(url, {
- method:'GET',
- headers:headers
- })
- .then((response) => response.json())
- .then((response) => {
- resolve(response);
- })
- .catch((error) => {
- reject({status:-1})
- })
- .done();
- })
- }
- module.exports = HTTPBase;
调用
- // 网络请求
- fetchData(resolve) {
- HTTPBase.get('http://guangdiu.com/api/gethots.php')
- .then((responseData) => {
- this.setState({
- dataSource: this.state.dataSource.cloneWithRows(responseData.data),
- loaded:true,
- });
- if (resolve !== undefined){
- setTimeout(() => {
- resolve(); // 关闭动画
- }, 1000);
- }
- })
- .catch((error) => {
- })
- }
.
React-Native 之 GD (八)GET 网络请求封装的更多相关文章
- android翻译应用、地图轨迹、视频广告、React Native知乎日报、网络请求框架等源码
Android精选源码 android实现高德地图轨迹效果源码 使用React Native(Android和iOS)实现的 知乎日报效果源码 一款整合百度翻译api跟有道翻译api的翻译君 RxEa ...
- 使用react native制作的一款网络音乐播放器
使用react native制作的一款网络音乐播放器 基于第三方库 react-native-video设计"react-native-video": "^1.0.0&q ...
- flutter dio网络请求封装实现
flutter dio网络请求封装实现 文章友情链接: https://juejin.im/post/6844904098643312648 在Flutter项目中使用网络请求的方式大致可分为两种 ...
- 十. Axios网络请求封装
1. 网络模块的选择 Vue中发送网络请求有非常多的方式,那么在开发中如何选择呢? 选择一:传统的Ajax是基于XMLHttpRequest(XHR) 为什么不用它呢?非常好解释配置和调用方式等非常混 ...
- React Native 网络请求封装:使用Promise封装fetch请求
最近公司使用React作为前端框架,使用了异步请求访问,这里做下总结: React Native中虽然也内置了XMLHttpRequest 网络请求API(也就是俗称的ajax),但XMLHttpRe ...
- React-Native 之 GD (九)POST 网络请求封装
1.POST /** * * POST请求 * * @param url * @param params {}包装 * @param headers * * @return {Promise} * * ...
- React Native学习(八)—— 对接七鱼客服
本文基于React Native 0.52 Demo上传到Git了,有需要可以看看,写了新内容会上传的.Git地址 https://github.com/gingerJY/React-Native-D ...
- Android,适合Restful网络请求封装
借助volley.Gson类库. 优点 网络请求集中处理,返回值直接为预期的对象,不需要手动反序列,提高效率,使用时建立好model类即可. 使用效果 DataProess.Request(true, ...
- iOS开发——post异步网络请求封装
IOS中有许多网络请求的函数,同步的,异步的,通过delegate异步回调的. 在做一个项目的时候,上网看了很多别人的例子,发现都没有一个简单的,方便的异步请求的封装例子.我这里要给出的封装代码,是异 ...
随机推荐
- windows上安装 包管理工具choco及scoop
1.安装 choco: 1.1.使用管理员方式打开 PowerShell 1.2.输入 Set-ExecutionPolicy RemoteSigned,输入 Y 1.3.安装 choco输入:iwr ...
- ThinkPHP5 与 composer
我是通过安装composer来获取tp5安装的,也是学习一下 在 Windows 中,你需要下载并运行 Composer-Setup.exe. 安装时,要选择本地环境中php.exe作为跟目录,这个可 ...
- 用yum快速搭建LAMP平台与虚拟域名配置
实验环境: [root@nmserver-7 html]# cat /etc/redhat-release CentOS release 7.3.1611 (AltArch) [root@nmserv ...
- 05: 常用反扒机制 & 解决方法
1.1 常用反扒机制 参考博客:https://blog.csdn.net/python36/article/details/90174300 1.header 浏览器的请求头 header中添 ...
- Python作图包含type3字体解决方案
1. 解决方案 matplotlib.rcParams[‘text.usetex’] = True
- [LeetCode] 164. 最大间距
题目链接 : https://leetcode-cn.com/problems/maximum-gap/ 题目描述: 给定一个无序的数组,找出数组在排序之后,相邻元素之间最大的差值. 如果数组元素个数 ...
- [LeetCode] 103. 二叉树的锯齿形层次遍历
题目链接 : https://leetcode-cn.com/problems/binary-tree-zigzag-level-order-traversal/ 题目描述: 给定一个二叉树,返回其节 ...
- TMS320F28335——下载程序到flash中
一.让CCS软件支持Flash烧写 添加F28335.cmd文件 如图屏蔽掉25335_RAM_lnk.cmd 2.支持从Flash中拷贝文件到RAM中 添加DSP2832x_MemCopy.c 在主 ...
- ubuntu上的疑难杂症(不定期更新……)
ubuntu系统英伟达显卡驱动怎么装 sudo apt-get purge nvidia* #如果之前安装过显卡驱动,就执行这一句来卸载 sudo apt-add-repository ppa:gra ...
- 【学习】 015 Linux相关
Linux入门 什么是Linux Linux简介 Linux是一种自由和开放源码的操作系统,存在着许多不同的Linux版本,但它们都使用了Linux内核.Linux可安装在各种计算机硬件设备中,比如手 ...