ReactNative fetch 网络请求

来源:互联网 发布:中国医药化工网数据库 编辑:程序博客网 时间:2024/06/04 18:45

ReactNative  fetch 网络请求

import React, {Component} from 'react';import {    AppRegistry,    StyleSheet,    Text,    View,    TouchableOpacity,    TextInput,    Image,} from 'react-native';/** fetch * 在ReactNative 中,使用fetch实现网络请求 * * 需求一:使用 get post 方式 实现获取数据 * 需求二:电影列表(网络请求数据) * * fetch * 在ReactNative 中,使用fetch实现网络请求,fetch同XMLHttpRequest非常类似 * 是一个封装成都更高的网络API,使用起来简洁 高效,因为使用了Promise * * Promise是一部编程的一种解决方案,笔记哦啊传统的解决方法----回调函数和事件-- * 更合理和更强大,ES6将其写进了语言标准,同意了用法,原声提供了Promise对象, * 简单说就是一个容器,里面保存着某个未来才会结束的事情(通常是一个异步操作)的结果 * * Promise对象代表一个异步操作,有三种状态 Pending(进行中)、Resolved(已完成)、Rejected(以失败 ) * * Promise实例生成以后,可以分贝指定“完成”和“失败”状态的回调函数,实现方式: * 链式调用方法 fetch中使用的就是该特性 * * 语法: * fetch(参数) * .then(完成的回调函数) * .catch(失败的回调函数) * * fetch(url,opts) * .then((response)=>{ *      //网络请求成执行函数,得到响应题对象,通过response可以回去请求的数据 *      //例如:json/text等 * *      return response.text(); *      return response.json(); * ) * .then((resonseDate)=>{ * //处理请求得到的数据 * ) * .catch((error)=>{ *  //网络请求失败执行该回掉函数,得到错误信息 * ) */function getRequest(url) {    // let opts = {    //     method: "GET"    // };    // fetch(url, opts)    //     .then((response) => {    //         return response.text();//返回数据为文本    //     })    //     .then((responseText) => {    //         alert(responseText);    //     })    //     .catch((error) => {    //         alert(error);    //     })    alert(url);}/** * FormData * * web应用中频繁使用的一项功能就是表单数据的序列化,XMLHttpRequest2级定义了 * FormData主要用于实现序列化表单以及创建于表单格式相同的数据 * * var date=new FromData(); * data.append("name","msg"); * append方法接受两个参数 :建和值 分别对应表单字段的名字和字段中包含的值 * 添加多个键值对 * * 在jquery中,“key1=value1&key2=value2”作为参数掺入对象框架会自动封装 * 成FromData形式,在Fetch中进行post请求时,需要自动创建FromData对象传给bod */function postRequest(url) {    // //将key1=value1&key2=value2” 封装成FromData    // let fromData = new FormData();    // fromData.append("username", "react");    // fromData.append("password", "native");    //    // let opts = {    //     method: "POST",    //     body: fromData    // }    //    // fetch(url, opts)    //     .then((response) => {    //         return response.text();    //     })    //     .then((responseText => {    //         alert(responseText);    //     }))    //     .catch((error) => {    //         alert(error);    //     })    alert(url);}let GetData = React.createClass({    render: function () {        return (            <View style={styles.container}>                <TouchableOpacity                    style={styles.btn}                    onPress={getRequest.bind(this, "https://thefountainlove.github.io/")}                >                    <Text>GET</Text>                </TouchableOpacity>                <TouchableOpacity                    style={styles.btn}                    onPress={postRequest.bind(this, "url")}                >                    <Text>POST</Text>                </TouchableOpacity>            </View>        );    }});let styles = StyleSheet.create({    container: {        flex: 1,        marginTop: 30,        backgroundColor: "cyan",        flexDirection: "row",        justifyContent: "space-around",        alignItems: "center"    },    btn: {        width: 50,        height: 30,        borderWidth: 1,        borderRadius: 3,        borderColor: "black",        backgroundColor: "yellow",        justifyContent: "center",        alignItems: "center"    }});module.exports = GetData;


原创粉丝点击