ReactNative项目分享(2)封装网络模块
2017-03-03 20:36
363 查看
这里简单介绍一下RN的网络请求,并且封装好get和post请求。
需要注意的是我使用了async这种写法,个人认为比较简单。
另外还有一个AsyncStorage的方法,用起来还是挺顺手的,详情请看代码和注释吧。
http://www.jianshu.com/p/5d01e5447b74
ReactNavite经验分享
需要注意的是我使用了async这种写法,个人认为比较简单。
另外还有一个AsyncStorage的方法,用起来还是挺顺手的,详情请看代码和注释吧。
http://www.jianshu.com/p/5d01e5447b74
/** * MYrnProject React Native App * @flow * @Create date 20170301 * @Create by Decade */ import React, { Component } from 'react'; import { AsyncStorage, } from 'react-native'; export default class Networking extends Component { static queryParams(params) { return Object.keys(params) .map(k => encodeURIComponent(k) + '=' + encodeURIComponent(params[k])) .join('&'); } /** * 网络请求封装方法 * @param 请求方法 * @param 请求URL * @param 请求参数(字典形式) */ static async fetchData(reqMethod, reqUrl, reqParams) { try { let headers = JSON.parse(await AsyncStorage.getItem('headers')) || {}; let postBody = null; if (reqMethod == 'POST') { postBody = JSON.stringify(reqParams); } if (reqMethod == 'GET') { reqUrl += (reqUrl.indexOf('?') === -1 ? '?' : '&') + Networking.queryParams(reqParams); } let response = await fetch(reqUrl, { method: reqMethod, body: postBody, headers: Object.assign(headers, { 'Content-Type': 'application/json', }), }); let responseJson = await response.json(); return { json: responseJson, resp: response, }; } catch(error) { console.error(error); } } /** * 异步获取或写入本地存储 * @param inputKey * @param inputData 可选 没有inputData则为读取方法 有则为写入存储 */ static async getOrsetData(inputKey, inputData, callback) { let data = await AsyncStorage.getItem(inputKey); let original = JSON.parse(data) || {}; if (inputData) { Object.assign(original, inputData); for (var key in original) { if (original[key] === null) delete original[key]; } await AsyncStorage.setItem(inputKey, JSON.stringify(original), callback); } else { return await original; } } }
ReactNavite经验分享
相关文章推荐
- ReactNative 项目实战 (2) ListView 使用 网络请求以及下拉刷新 (条目控件封装)
- 标准功能模块组件 -- “文档管理组件,网络文档管理,网络存储”,B/S版本组件可独立运行,也可集成到其他项目里,数据结构清晰思路严谨
- 去年一个百万级的小软件项目经验分享,20来个功能模块,项目不太好做有些棘手
- FM界面-项目模块分享
- Android网络收音机项目(源码实例分享)
- 分享以前网络收集免费PrestaShop模块 – Download PrestaShop Fr...
- android小项目源码(源码来源于网络,上百个源码打包分享)
- ARCEmu项目wow私服服务器网络模块分析(四)
- ARCEmu项目wow私服服务器网络模块分析(三)
- 去年一个百万级的小软件项目经验分享,20来个功能模块,项目不太好做有些棘手
- 去年一个百万级的小软件项目经验分享,20来个功能模块,项目不太好做有些棘手
- 去年一个百万级的小软件项目经验分享,20来个功能模块,项目不太好做有些棘手
- 去年一个百万级的小软件项目经验分享,20来个功能模块,项目不太好做有些棘手
- ARCEmu项目wow私服服务器网络模块分析(五)
- 去年一个百万级的小软件项目经验分享,20来个功能模块,项目不太好做有些棘手
- 标准功能模块组件 -- “文档管理组件,网络文档管理,网络存储”,B/S版本组件可独立运行,也可集成到其他项目里,数据结构清晰思路严谨
- Android 分享机顶盒项目的封装类《GridView》 推荐
- 去年一个百万级的小软件项目经验分享,20来个功能模块,项目不太好做有些棘手 推荐
- Android 分享机顶盒项目的封装类《GridView》