React Native从零开始(七)Fetch网络请求

React Native从零开始(七)Fetch网络请求




先上效果图




因为网络请求比较简单,所以我们直接先开始看语法然后看这个GET和POST不同的实现就好。


一、语法使用


/*
 语法:
 fetch(参数)
 .then(完成的回调函数)
 .catch(失败的回调函数)

 fetch(url,opts)
 .then((response) => {
 //请求成功后返回的对象response
 //例如:json、text等
 return response.text();
 return response.json();
 })
 .then((responseData) => {
 //处理请求得到的数据
 })
 .catch((error) => {
 //网络请求失败执行该回调函数,得到错误信息
 })
 * */

语法很简单,感觉类似于Android新建Notification一样。
then第一个是获取整个数据,第二个是根据第一个数据转换而来的你所需要的数据,也就是说你需要一个json数据那么在第一步返回json就好。

二、具体实现
POST和GET基本上是一样的只不过POST比GET的参数多了一个BODY,GET请求是将参数添加在url中而POST则放在body中即可。

1、GET请求

  getRequest(url){
        /*网络请求的配置*/
        var opts = {
            method:"GET"
        }
        fetch(url,opts)
            .then((response) => {
                return response.text();
            })
            .then((responseText) => {
                alert(responseText);
            })
            .catch((error) =>{
                alert(error);
            })
    }

2、POST请求

 postRequest(url){
        let formData = new FormData();
        formData.append("username","SuperBigLw");
        formData.append("password","123456");
        var opts = {
            method:"POST",
            body:formData
        }
        fetch(url,opts)
            .then((response) => {
                return response.text();
            })
            .then((responseText) => {
                alert(responseText);
            })
            .catch((error) => {
                alert(error)
            })
    }


三、附上完整代码
1.getData.js
/**
 * Created by 11158 on 2017-01-16.
 */
/**
 * Created by 11158 on 2017-01-16.
 */
import React, { Component } from 'react';
import {
    AppRegistry,
    StyleSheet,
    Text,
    View,
    TouchableOpacity
} from 'react-native';

/*
 语法:
 fetch(参数)
 .then(完成的回调函数)
 .catch(失败的回调函数)

 fetch(url,opts)
 .then((response) => {
 //请求成功后返回的对象response
 //例如:json、text等
 return response.text();
 return response.json();
 })
 .then((responseData) => {
 //处理请求得到的数据
 })
 .catch((error) => {
 //网络请求失败执行该回调函数,得到错误信息
 })
 * */
var getUrl = "http://project.lanou3g.com/projects/bj/reactnative/login.php?username=lanou&password=123";
var postUrl = "http://project.lanou3g.com/projects/bj/reactnative/login.php";
class getData extends Component{
    getRequest(url){
        /*网络请求的配置*/
        var opts = {
            method:"GET"
        }
        fetch(url,opts)
            .then((response) => {
                return response.text();
            })
            .then((responseText) => {
                alert(responseText);
            })
            .catch((error) =>{
                alert(error);
            })
    }
    postRequest(url){
        let formData = new FormData();
        formData.append("username","SuperBigLw");
        formData.append("password","123456");
        var opts = {
            method:"POST",
            body:formData
        }
        fetch(url,opts)
            .then((response) => {
                return response.text();
            })
            .then((responseText) => {
                alert(responseText);
            })
            .catch((error) => {
                alert(error)
            })
    }
    render(){
        return(
            <View style={styles.container}>
                <TouchableOpacity onPress={this.getRequest.bind(this,getUrl)}>
                    <View style={styles.btn}>
                        <Text>GET</Text>
                    </View>
                </TouchableOpacity>
                <TouchableOpacity onPress={this.postRequest.bind(this,postUrl)}>
                    <View style={styles.btn}>
                        <Text>POST</Text>
                    </View>
                </TouchableOpacity>
            </View>
        );
    }
}
const styles = StyleSheet.create({
    container:{
        backgroundColor:"cyan",
        flexDirection:"row",
        justifyContent:"space-around",
        alignItems:"center",
        flex:1
    },
    btn:{
        width:60,
        height:30,
        borderWidth:1,
        borderRadius:3,
        borderColor:"black",
        backgroundColor:"yellow",
        justifyContent:"center",
        alignItems:"center"

    }
});
module.exports = getData;

2.index.android.js

/**
 * Sample React Native App
 * https://github.com/facebook/react-native
 * @flow
 */

import React, { Component } from 'react';
import {
  AppRegistry,
  StyleSheet,
  Text,
  View
} from 'react-native';
var GetData = require("./getData");
export default class FetchDemo extends Component {
  render() {
    return (
      <GetData/>
    );
  }
}

const styles = StyleSheet.create({

});

AppRegistry.registerComponent('FetchDemo', () => FetchDemo);


最后说明一下这个URL可以将你上传的用户名和密码参数返回给你本身,大家可以拿这个测试。

大家可以加好友交流学习
QQ:1115856293
微信:




  • 6
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
要从零搭建React Native框架,你需要按照以下步骤进行操作: 1. 首先,确保你的开发环境已经安装了Node.js和npm。你可以在官方网站上下载并安装它们。 2. 打开终端或命令提示符,使用npm全局安装React Native命令行工具。运行以下命令: ``` npm install -g react-native-cli ``` 3. 创建一个新的React Native项目。在终端中,进入你想要创建项目的目录,并运行以下命令: ``` react-native init MyProject ``` 4. 进入项目目录: ``` cd MyProject ``` 5. 接下来,你需要根据你的操作系统和平台进行一些设置。 - 对于Android平台: - 确保你已经安装了Java Development Kit (JDK)。你可以从Oracle官方网站下载并安装它。 - 确保你已经安装了Android开发工具包 (Android SDK)。你可以从Android官方网站下载并安装它。 - 设置ANDROID_HOME环境变量,指向你的Android SDK的安装路径。 - 在项目的android目录下,创建一个名为local.properties的文件,并将以下内容添加到文件中: ``` sdk.dir = /path/to/your/Android/sdk ``` 将"/path/to/your/Android/sdk"替换为你的Android SDK的实际路径。 - 对于iOS平台: - 确保你已经安装了Xcode,它是开发iOS应用的官方工具。 - 在项目的ios目录下,运行以下命令来安装项目的依赖: ``` pod install ``` 6. 现在,你可以开始编写React Native代码了。在项目的app目录下,你可以编写React Native的JavaScript代码,描述应用的外观和行为。 7. 如果你需要编写Android原生代码,可以在项目的android目录下进行。同样地,如果你需要编写iOS原生代码,可以在项目的ios目录下进行。 8. 最后,你需要将React Native的JavaScript代码打包并生成相应的资源文件。在终端中,运行以下命令: ``` npx react-native bundle --platform android --dev false --entry-file index.js --bundle-output android/app/src/main/assets/index.android.bundle --assets-dest android/app/src/main/res ``` 这将生成一个名为index.android.bundle的文件,以及一些资源文件,用于在Android应用中加载React Native代码。 这样,你就成功地从零搭建了一个React Native框架。你可以根据需要继续开发和定制你的应用。 #### 引用[.reference_title] - *1* [React Native开发环境搭建详细步骤](https://blog.csdn.net/Asafoetida/article/details/123042482)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [混合框架ReactNative之 环境搭建](https://blog.csdn.net/qq_29848853/article/details/129839220)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值