博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ReactNative项目分享(2)封装网络模块
阅读量:4086 次
发布时间:2019-05-25

本文共 2170 字,大约阅读时间需要 7 分钟。

这里简单介绍一下RN的网络请求,并且封装好get和post请求。
需要注意的是我使用了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;        }    }}

转载地址:http://ezeni.baihongyu.com/

你可能感兴趣的文章
谈谈认知与知识
查看>>
Android Studio 插件推荐一
查看>>
Java 中 String 类为什么要设计成不可变的?
查看>>
Java的强引用,软引用,弱引用,虚引用及其使用场景
查看>>
String、StringBuilder和StringBuffer
查看>>
Java反射基础
查看>>
因代码规范导致枪击案,这样黑程序员不太好吧 。
查看>>
Android事件分发机制
查看>>
Android Clean 架构
查看>>
Android 音视频学习资源汇总
查看>>
我的 2018 年终总结
查看>>
JVM 中如何判断对象可以被回收
查看>>
JVM 内存结构
查看>>
JVM 中的内存溢出
查看>>
maven的使用
查看>>
SpringMVC配置
查看>>
Java反射机制:从对象获取类的所有方法信息
查看>>
Java反射机制:获取成员变量和构造函数的信息
查看>>
Java反射机制:方法反射的基本操作
查看>>
Html和CSS的关系
查看>>