zoukankan      html  css  js  c++  java
  • React AJAX 简单演示

    React 组件的数据可以通过 componentDidMount 方法中的 Ajax 来获取,当从服务端获取数据时可以将数据存储在 state 中,再用 this.setState 方法重新渲染 UI。
    当使用异步加载数据时,在组件卸载前使用 componentWillUnmount 来取消未完成的请求。

    下面这个案例用到了jQuery,所以安装jQuery先

    npm i jquery -S

    引入jQuery

    import $ from  'jquery'
    import React, { Component,Fragment } from 'react';
    import ReactDOM from 'react-dom';
    import './index.css';
    import * as serviceWorker from './serviceWorker';
    import $ from  'jquery';
    
    class User extends Component{
      constructor(props){
        super(props);
        this.state={
          username:'',
          userUrl:''
        }
      }
    
      //组件挂载完成后
      componentDidMount(){
        this.myAjax=$.get(this.props.source,res=>{
          var lastGist=res[0];
          console.log(lastGist);
          this.setState({
            username:lastGist.owner.login,
            userUrl:lastGist.html_url
          })
        })
      }
    
      //组件将要卸载前
      componentWillUnmount(){
        //取消未完成的请求
        this.myAjax.abort();
      }
    
      render(){
        return(
          <Fragment>
            <div>用户账号:{this.state.username}</div>
            <a href={this.state.userUrl}>用户网址:{this.state.userUrl}</a>
          </Fragment>
        )
      }
    }
    
      ReactDOM.render(
        <div>
           <User source="https://api.github.com/users/octocat/gists" />  
        </div>,
        document.getElementById('example')
      );
    
    serviceWorker.unregister();

    可以使用之前知识列出所有条目

    import React, { Component } from 'react';
    import ReactDOM from 'react-dom';
    import './index.css';
    import * as serviceWorker from './serviceWorker';
    import $ from  'jquery';
    
    class User extends Component{
      constructor(props){
        super(props);
        this.state={
          username:[],
          userUrl:[]
        }
      }
    
      //组件挂载完成后
      componentDidMount(){
        this.myAjax=$.get(this.props.source,res=>{
          var lastGist=res;
          var usernames=[];
          var userUrls=[];
    
          lastGist.map(
            function proc(item){
              usernames.push(item.owner.login);
              userUrls.push(item.html_url);
              return item;
            }
          )
    
          this.setState({
            username:usernames,
            userUrl:userUrls
          })
        })
      }
    
      //组件将要卸载前
      componentWillUnmount(){
        //取消未完成的请求
        this.myAjax.abort();
      }
    
      render(){
        var names=this.state.username;
        var urls=this.state.userUrl;
        return(
          <ul>
            {
              names.map(
                function(item,index){
                  return(
                    <div key={index}>
                      <li>{item}</li>
                      <a href={urls[index]} rel="nofollow">{urls[index]}</a>
                    </div>
                  )
                }
              )
            }
          </ul>
        )
      }
    }
    
      ReactDOM.render(
        <div>
           <User source="https://api.github.com/users/octocat/gists" />  
        </div>,
        document.getElementById('example')
      );
    
    serviceWorker.unregister();

  • 相关阅读:
    【车】平安车险费用
    【光环国际】掌握项目经理12个工作流程
    【光环国际】500强公司7个项目管理工具
    数据仓库和商业智能演进五个阶段
    【技术与商业案例解读笔记】095:Google大数据三驾马车笔记
    15道最常考的SpringBoot面试题,你都遇到过哪些?
    用户画像4:标签数据开发
    plsql 传参
    shell专题(二):Shell解析器
    shell专题(三):Shell脚本入门
  • 原文地址:https://www.cnblogs.com/chenyingying0/p/12698047.html
Copyright © 2011-2022 走看看