react学习——22使用fetch发送网络请求

1、代码

import React, {Component} from "react";
import PubSub from 'pubsub-js'
//引入axios
export default class Search extends Component {
    search = async () => {
        //获取用户的输入(连续解构赋值+重命名)
        const {keyword: {value: keyword}} = this;
        //发送请求前通知List组件更新状态
        /*this.props.updateAppState({isFirst:false,isLoding: true});*/
        PubSub.publish('update-list', {isFirst: false, isLoding: true});
        //发送网络请求   https://api.github.com/search/users?q=xxxxxx
        // axios.get(`https://api.github.com/search/users?q=${keyword}`).then(
        //     res=>{
        //         //请求成功后通知List组件更新状态
        //         // const {items} = res.data;
        //         // this.props.updateAppState({isLoding:false,users:items});
        //         // console.log(items)
        //         PubSub.publish('update-list',{isLoding:false,users:res.data.items});
        //     },
        //     err=>{
        //         //请求失败通知App组件更新状态
        //         // this.props.updateAppState({isLoding:false,err:err.message});
        //         PubSub.publish('update-list',{isLoding:false,err:err.message});
        //     }
        // )
        //使用fetch发送网络请求 (未优化)
        // fetch(`https://api.github.com/search/users?q=${keyword}`).then(
        //     res=>{
        //         console.log('请求成功了')
        //         return res.json();
        //     },
        //     // err=>{
        //     //     console.log('请求失败了')
        //     //     return new Promise(()=>{})
        //     // }
        // ).then(
        //     res=>{
        //         console.log('获取数据成功了',res)
        //     },
        //     // err=>{console.log('获取数据失败了',err)}
        // ).catch((err)=>{console.log('请求失败了',err)})
        //使用fetch发送网络请求 (优化)
        try {
            const response = await fetch(`https://api.github.com/search/users?q=${keyword}`)
            const data = await response.json();
            console.log('获取数据成功了', data)
            PubSub.publish('update-list',{isLoding:false,users:data.items});
        }catch (e) {
            console.log('获取数据失败了',e)
            PubSub.publish('update-list',{isLoding:false,err:e.message});
        }
    }
    render()
    {
        return(
            <section className="jumbotron">
                <h3 className="jumbotron-heading">Search Github Users</h3>
                <div>
                    <input ref={c=>this.keyword=c} type="text" placeholder="enter the name you search"/>&nbsp;
                    <button onClick={this.search}>Search</button>
                </div>
            </section>
        );
    }
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一叶飘零晋

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值