1.到这里,相信各位对 React-Native 有所熟悉了吧,从现在开始我们要慢慢往实际的方向走,这边就先从网络请求这部分开始,在正式开发中,网络请求一般都单独作为一部分,我们在需要使用的地方只需要简单调用一下即可,这样做的好处是让整个 工程 的结构更加清晰,让组件们各司其职,只管好自己该管的事,并且后期维护成本也会相应降低。

首先,我们要先对 fetch 的 GET 和 POST 请求方式进行一层基础封装,也就是要把它们单独独立出来,那么这边先来看下 GET 这边:

HTTPBase.js

  1. /**
  2. * GET 网络请求封装
  3. */
  4.  
  5. var HTTPBase = {};
  6.  
  7. /**
  8. *
  9. * GET请求
  10. *
  11. * @param url
  12. * @param params {}包装
  13. * @param headers
  14. *
  15. * @return {Promise} 返回一个Promise对象
  16. *
  17. * */
  18. HTTPBase.get = function (url, params, headers) { // 参数
  19. if (params) {
  20.  
  21. let paramsArray = [];
  22.  
  23. // 获取 params 内所有的 key
  24. let paramsKeyArray = Object.keys(params);
  25. // 通过 forEach 方法拿到数组中每个元素,将元素与参数的值进行拼接处理,并且放入 paramsArray 中
  26. paramsKeyArray.forEach(key => paramsArray.push(key + '=' + params[key]));
  27.  
  28. // 网址拼接
  29. if (url.search(/\?/) === -1) {
  30. url += '?' + paramsArray.join('&');
  31. }else {
  32. url += paramsArray.join('&');
  33. }
  34. }
  35.  
  36. // 向外部,返回一个Promise对象
  37. return new Promise(function (resolve, reject) {
  38. fetch(url, {
  39. method:'GET',
  40. headers:headers
  41. })
  42. .then((response) => response.json())
  43. .then((response) => {
  44. resolve(response);
  45. })
  46. .catch((error) => {
  47. reject({status:-1})
  48. })
  49. .done();
  50. })
  51. }
  52.  
  53. module.exports = HTTPBase;

调用

  1. // 网络请求
  2. fetchData(resolve) {
  3. HTTPBase.get('http://guangdiu.com/api/gethots.php')
  4. .then((responseData) => {
  5. this.setState({
  6. dataSource: this.state.dataSource.cloneWithRows(responseData.data),
  7. loaded:true,
  8. });
  9. if (resolve !== undefined){
  10. setTimeout(() => {
  11. resolve(); // 关闭动画
  12. }, 1000);
  13. }
  14. })
  15. .catch((error) => {
  16.  
  17. })
  18. }

.

React-Native 之 GD (八)GET 网络请求封装的更多相关文章

  1. android翻译应用、地图轨迹、视频广告、React Native知乎日报、网络请求框架等源码

    Android精选源码 android实现高德地图轨迹效果源码 使用React Native(Android和iOS)实现的 知乎日报效果源码 一款整合百度翻译api跟有道翻译api的翻译君 RxEa ...

  2. 使用react native制作的一款网络音乐播放器

    使用react native制作的一款网络音乐播放器 基于第三方库 react-native-video设计"react-native-video": "^1.0.0&q ...

  3. flutter dio网络请求封装实现

    flutter dio网络请求封装实现 文章友情链接:   https://juejin.im/post/6844904098643312648 在Flutter项目中使用网络请求的方式大致可分为两种 ...

  4. 十. Axios网络请求封装

    1. 网络模块的选择 Vue中发送网络请求有非常多的方式,那么在开发中如何选择呢? 选择一:传统的Ajax是基于XMLHttpRequest(XHR) 为什么不用它呢?非常好解释配置和调用方式等非常混 ...

  5. React Native 网络请求封装:使用Promise封装fetch请求

    最近公司使用React作为前端框架,使用了异步请求访问,这里做下总结: React Native中虽然也内置了XMLHttpRequest 网络请求API(也就是俗称的ajax),但XMLHttpRe ...

  6. React-Native 之 GD (九)POST 网络请求封装

    1.POST /** * * POST请求 * * @param url * @param params {}包装 * @param headers * * @return {Promise} * * ...

  7. React Native学习(八)—— 对接七鱼客服

    本文基于React Native 0.52 Demo上传到Git了,有需要可以看看,写了新内容会上传的.Git地址 https://github.com/gingerJY/React-Native-D ...

  8. Android,适合Restful网络请求封装

    借助volley.Gson类库. 优点 网络请求集中处理,返回值直接为预期的对象,不需要手动反序列,提高效率,使用时建立好model类即可. 使用效果 DataProess.Request(true, ...

  9. iOS开发——post异步网络请求封装

    IOS中有许多网络请求的函数,同步的,异步的,通过delegate异步回调的. 在做一个项目的时候,上网看了很多别人的例子,发现都没有一个简单的,方便的异步请求的封装例子.我这里要给出的封装代码,是异 ...

随机推荐

  1. windows上安装 包管理工具choco及scoop

    1.安装 choco: 1.1.使用管理员方式打开 PowerShell 1.2.输入 Set-ExecutionPolicy RemoteSigned,输入 Y 1.3.安装 choco输入:iwr ...

  2. ThinkPHP5 与 composer

    我是通过安装composer来获取tp5安装的,也是学习一下 在 Windows 中,你需要下载并运行 Composer-Setup.exe. 安装时,要选择本地环境中php.exe作为跟目录,这个可 ...

  3. 用yum快速搭建LAMP平台与虚拟域名配置

    实验环境: [root@nmserver-7 html]# cat /etc/redhat-release CentOS release 7.3.1611 (AltArch) [root@nmserv ...

  4. 05: 常用反扒机制 & 解决方法

    1.1 常用反扒机制   参考博客:https://blog.csdn.net/python36/article/details/90174300 1.header  浏览器的请求头 header中添 ...

  5. Python作图包含type3字体解决方案

    1. 解决方案 matplotlib.rcParams[‘text.usetex’] = True

  6. [LeetCode] 164. 最大间距

    题目链接 : https://leetcode-cn.com/problems/maximum-gap/ 题目描述: 给定一个无序的数组,找出数组在排序之后,相邻元素之间最大的差值. 如果数组元素个数 ...

  7. [LeetCode] 103. 二叉树的锯齿形层次遍历

    题目链接 : https://leetcode-cn.com/problems/binary-tree-zigzag-level-order-traversal/ 题目描述: 给定一个二叉树,返回其节 ...

  8. TMS320F28335——下载程序到flash中

    一.让CCS软件支持Flash烧写 添加F28335.cmd文件 如图屏蔽掉25335_RAM_lnk.cmd 2.支持从Flash中拷贝文件到RAM中 添加DSP2832x_MemCopy.c 在主 ...

  9. ubuntu上的疑难杂症(不定期更新……)

    ubuntu系统英伟达显卡驱动怎么装 sudo apt-get purge nvidia* #如果之前安装过显卡驱动,就执行这一句来卸载 sudo apt-add-repository ppa:gra ...

  10. 【学习】 015 Linux相关

    Linux入门 什么是Linux Linux简介 Linux是一种自由和开放源码的操作系统,存在着许多不同的Linux版本,但它们都使用了Linux内核.Linux可安装在各种计算机硬件设备中,比如手 ...