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();

  • 相关阅读:
    webDriver检索table数据
    C# 遍历枚举
    Java——Iterate through a HashMap
    Java——Read/convert an InputStream to a String
    简单的异步HTTP服务端和客户端
    授信主体查找
    mysql 事务测试
    mysql 替换
    如何查看由EF生成的SQL?
    C# 如何用多字符分割字符串
  • 原文地址:https://www.cnblogs.com/chenyingying0/p/12698047.html
Copyright © 2011-2022 走看看