react 搜索数据案例

app.js

import React, { Component } from 'react'

import ReactDOM, { render } from 'react-dom';

import logo from './logo.svg';

import './App.css';


 

import Search from './search'

import List from './list'

import axios from 'axios';


 

export default class App extends Component {

  state = {

    users: [],

    firstPag:true,

    isLoading:true,

    err:''

  }

  getData = (update) => {

    this.setState(update)

   

  }

  render() {

    

    return (

   

    <div className="App">

      <Search getData={this.getData} />

      <List {...this.state} />

    </div>

  );

  }

 

}

search -> index.jsx

import React, { Component } from 'react'

import ReactDOM from 'react-dom';

import axios from 'axios';

 

export default class Search extends Component{

    updatelist=()=>{

        // console.log(this.keyword.value);

        const {value}=this.keyword;

        this.props.getData({firstPag:false,isLoading:true})

        axios.get('https://api.github.com/search/users?q='+value).then(

            response =>{

                console.log(response.data.items);

                this.props.getData({firstPag:false,isLoading:false,users:response.data.items})

           

            //   const users=response.data.items;

            //   this.setState({users})

            },

            error=>{

                this.props.getData({firstPag:false,isLoading:false,err:error.message})

            }

          )

       

    }

 

    render (){

        return (

            <div>

                <input type='text' ref={c=>{this.keyword=c}}  />

                <button onClick={this.updatelist}>搜索</button>

            </div>

        )

    }

}


List -> index.jsx

import React, { Component } from 'react'

import ReactDOM from 'react-dom';

 

export default class List extends Component {

    render() {

        const { users,firstPag,isLoading,err } = this.props

        return (

 

            <div>

                {

                    firstPag ? <h2>欢迎搜索</h2> :

                    isLoading ? <h2>isLoading ...</h2> :

                    err ? <h2>{err}</h2> :

                    users.map((userObj,index) => {

                        return <div key={userObj.id} style={{ float: 'left',marginRight:'15px',marginTop:'50px' }}>

                            <img src={userObj.avatar_url} style={{display:'inline-block',width:'30px',height:'30px'}} />

                            <p>{userObj.login}</p>

                        </div>

                    })

                }

 

            </div>

        )

    }

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值