Maison > interface Web > Questions et réponses frontales > Comment demander des données avec React Fetch

Comment demander des données avec React Fetch

藏色散人
Libérer: 2023-01-05 10:02:37
original
2033 Les gens l'ont consulté

Comment demander des données avec React Fetch : 1. Placez la méthode demandée dans le "componentDidMount" du cycle de vie ; 2. Encapsulez la requête de récupération ; 3. Vérifiez l'état de la demande via la "fonction checkStatus(response){.. .}" méthode ;4. Utilisez la requête encapsulée et imprimez le résultat sur le serveur ou le navigateur.

Comment demander des données avec React Fetch

L'environnement d'exploitation de ce tutoriel : système Windows 10, version React16, ordinateur Dell G3.

Comment demander des données avec React Fetch ?

React Fetch request

J'ai besoin de l'utiliser récemment, alors apprenez-le

1.fetch

demande ajax basée sur une promesse

https://developer.mozilla.org/zh-CN/docs/ Web/API /Fetch_API

2. React utilise la méthode de requête fetch

et la place généralement dans le composantDidMount du cycle de vie

Le format de base des données demandées

Comment demander des données avec React Fetch

import React from 'react'
class RequestStu extends React.Component{
  constructor(props){
    super(props)
    this.state={
      test:{},
      arr:[]
    }
  }
  componentDidMount(){
    fetch('http://localhost/console/scene/scenedetaillist',{
      method:'GET',
      headers:{
        'Content-Type':'application/json;charset=UTF-8'
      },
      mode:'cors',
      cache:'default'
    })
     .then(res =>res.json())
     .then((data) => {
       console.log(data)  
       this.setState({
         test:data
       },function(){
         console.log(this.state.test)
         let com = this.state.test.retBody.map((item,index)=>{
           console.log(item.id)
           return <li key={index}>{item.name}</li>
         })
         this.setState({
           arr : com
         },function(){
           console.log(this.state.arr)
         })
       })
     }) 
  }
  render(){
    return (
      <div>
       <ul>
          {
            this.state.arr
          }
       </ul>
      </div>
    )
  }
}
export default RequestStu
Copier après la connexion

Affiché après la requête :

Comment demander des données avec React Fetch

3. Encapsulez la demande de récupération

Encapsulé pour un appel facile

Adresse du code : https://github.com/klren0312/react_study/blob/master/stu13/src/helper.js

helper.js

//全局路径
const commonUrl = &#39;http://127.0.0.1:3456&#39;
//解析json
function parseJSON(response){
  return response.json()
}
//检查请求状态
function checkStatus(response){
  if(response.status >= 200 && response.status < 500){
    return response
  }
  const error = new Error(response.statusText)
  error.response = response
  throw error
}
export default  function request(options = {}){
  const {data,url} = options
  options = {...options}
  options.mode = &#39;cors&#39;//跨域
  delete options.url
  if(data){
    delete options.data
    options.body = JSON.stringify({
      data
    })
  }
  options.headers={
    &#39;Content-Type&#39;:&#39;application/json&#39;
  }
  return fetch(commonUrl+url,options,{credentials: &#39;include&#39;})
    .then(checkStatus)
    .then(parseJSON)
    .catch(err=>({err}))
}
Copier après la connexion

Utilisez la requête encapsulée

import React from &#39;react&#39;
import request from &#39;./helper.js&#39;
class RequestDemo extends React.Component{
  componentDidMount(){
    request({
      url:&#39;/posttest&#39;,
      method:&#39;post&#39;,
      data:{"Header":{"AccessToken":"eyJ0eXBlIjoiSldUIiwiYWxnIjoiSFM1MTIifQ.eyJzdWIiOiIxMDYiLCJleHBpciI6MTUxMDczODAzNjA5MiwiaXNzIjoiIn0.eo000vRNb_zQOibg_ndhlWbi27hPt3KaDwVk7lQiS5NJ4GS4esaaXxfoCbRc7-hjlyQ8tY_NZ24BTVLwUEoXlA"},"Body":{}}
    }).then(function(res){
      console.log(res)
    })
  }
  render(){
    return (
      <div>
    test
      </div>
    )
  }
}
export default RequestDemo
Copier après la connexion

service Impression du terminal

Comment demander des données avec React Fetch

Impression du navigateur

Comment demander des données avec React Fetch

Livré avec une classe d'assistance

function parseJSON(response){
  return response.json()
}
function checkStatus(response){
  if(response.status >= 200 && response.status < 500){
    return response
  }
  const error = new Error(response.statusText)
  error.response = response
  throw error
}
/**
 * 登录请求
 * 
 * @param data 数据
 */
export function loginReq(data){ 
  const options = {}
  options.method = &#39;post&#39;
  options.made = &#39;cors&#39;
  options.body = JSON.stringify(data)
  options.headers={
    &#39;Content-Type&#39;:&#39;application/json&#39;
  }
  return fetch(&#39;/loginOk&#39;,{ ...options, credentials:&#39;include&#39;})
    .then(checkStatus)
    .then(parseJSON)
    .then((res)=>{
      if(res.retCode === &#39;0001&#39;){
        localStorage.setItem(&#39;x-access-token&#39;,res.retBody.AccessToken)
        return &#39;success&#39;
      }
      else if(res.retCode === &#39;0002&#39;){
        return &#39;error&#39;
      }
      else if(res.retCode === &#39;0003&#39;){
        return &#39;error&#39;
      }else{
        return ;
      }
      
    })
    .catch(err=>({err}))
}
/**
 * 普通请求
 * @param {*url,*method,*data} options 
 */
export  function request(options = {}){
  const Authorization = localStorage.getItem(&#39;x-access-token&#39;)
  const {data,url} = options
  options = {...options}
  options.mode = &#39;cors&#39;
  delete options.url
  if(data){
    delete options.data
    options.body = JSON.stringify(data)
  }
  options.headers={
    &#39;x-access-token&#39;:Authorization,
    &#39;Content-Type&#39;:&#39;application/json;charset=UTF-8&#39;
  }
  return fetch(url,{ ...options, credentials: &#39;include&#39;})
    .then(checkStatus)
    .then(parseJSON)
    .catch(err=>({err}))
}
Copier après la connexion

Apprentissage recommandé : "Tutoriel vidéo React"

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal