検索
ホームページウェブフロントエンドフロントエンドQ&Aバックエンドリクエストデータに反応する方法を実装する方法

React バックエンド リクエスト データの実装方法: 1. package.json に ""proxy":"http://localhost:5000"" を設定します; 2. src ディレクトリ " ファイルに "setupProxy.js" を作成します; 3. "setupProxy.js" で設定された関数を呼び出します。コードは "createProxyMiddleware('/api2',{target:...}" など) です。

#このチュートリアルの動作環境: Windows 10 システム、react バージョン 18.0.0、Dell G3 コンピューター

#react バックエンドからデータをリクエストする方法バックエンドリクエストデータに反応する方法を実装する方法

react -ajax リクエスト バックグラウンド データ メソッド

##react-ajax axios

方法 1: localhost:5000 がプロキシ先のサーバー

 "proxy":"http://localhost:5000"

localhost:5000

    ** の /students のデータを取得します。利点: **シンプルな構成、フロントエンド リクエスト リソースは不要です。プレフィックスは必要ありません。
  • **欠点: **複数のプロキシ サーバーを構成できません。
  • 方法 2: setupProxy を作成します。 src ディレクトリ内の js ファイル

ステップ 1: webpack は、setupProxy.js

setupProxy で構成された関数を呼び出すように構成されます。 js

  • #ステップ 2: 構成

    #
      getStudentData = () => {
        axios.get('/students').then(
          (result) => { console.log(result.data); },
          (reason) => { console.log(reason); })
      }
  • ##ソリューション リンク: https://www.csdn. net/tags/OtTaIg0sNzE3OC1ibG9n.html

  • クロスドメイン リクエストのリアル インターフェイスのケース

  • App.jsx
  • //const proxy=require("http-proxy-middleware")   :视频中请求的包,引用它出现了无法访问的问题//应该使用以下写法*******const { createProxyMiddleware } = require("http-proxy-middleware");module.exports=function(app){
        app.use(
            createProxyMiddleware('/api1',{//遇见/api1前缀的请求,就会触发该代理配置
                target:"http://localhost:5000",//请求转发给谁
                changeOrigin:true,//控制服务器收到的请求头中Host字段的值:host就是主机名+端口号
                	//true:后端接收到的host:localhost:5000
                	//false:后端接收到的host:localhost:3000
                	//系统默认为false,一般会设为true
                pathRewrite:{"^/api1":""}//重写请求路径(必须要写)
                //不写:后台接收到的请求路径:/api1/student
                //写了:后台请求的路径:/student
            }),
            createProxyMiddleware('/api2',{
                target:"http://localhost:5001",
                changeOrigin:true,
                pathRewrite:{"^/api2":""}
            }),
        )}
Search.jsxx

import React, { Component } from 'react'
import Search from './components/Search'
import List from './components/List'
import './App.css'

export default class App extends Component {
state={users:[]}
getSearchResult=(result)=>{
  this.setState({users:result})
}

  render() {
    return (
      <div>
        <search></search>
        <list></list>
      </div>
    )
  }
}

  • List.jsx

import React, { Component } from 'react'
import axios from 'axios'
import './index.css'

export default class Search extends Component {

  search = () => {
    //获取输入框中的值
    const { value } = this.keyWordElement;
    //发送请求
    axios.get(`/api1/search/users?q=${value}`).then(
      result => {
        this.props.getSearchResult(result.data.items)
      },
      reason => {
        console.log(reason);
      })
  }



  render() {
    return (
      <section>
        <h3 id="搜索github用户">搜索github用户</h3>
        <div>
          <input> this.keyWordElement = c} type="text" placeholder="enter the name you search" /> <button>搜索</button>
        </div>
      </section>
    )
  }
}
  • 反応 - コンポーネント間の通信

  • メッセージ サブスクリプションと公開メカニズム
  • PubSubJs:

  • ##pub:(パブリッシュ)publish

    sub:(subscribe)subscribe

    pubsub-js: パブリッシュとサブスクライブの実装に使用されます。 vue.eventBus で確認できます。関数のキャリアと見なされます

    #Subscriber: 関数を作成し、この関数をホスト用の pubsub に渡します

    #
    import React, { Component } from 'react'
    
    import './index.css'
    export default class List extends Component {
      render() {
        return (
          <div>
            {this.props.users.map(item=>{
                return    <div>
                    <a>
                      <img  src="/static/imghwm/default1.png" data-src="https://img.php.cn/upload/article/000/000/020/8311c35cd4729255aa36862f92c15493-0.png?x-oss-process=image/resize,p_40" class="lazy" alt="バックエンドリクエストデータに反応する方法を実装する方法" >
                    </a>
                    <p>{item.login}</p>
                  </div>
            })}
      
           
          </div>  
        )
      }
    }
    • パブリッシャー: パブリッシュとは、サブスクライバーが指定した関数を呼び出してパラメータを渡したり、操作を実行したりする機能を実現することを意味します

    #

    var token=PubSub.subscribe("myTopic",myFunction[托管的函数])//token,是当前订阅函数的唯一id,可以用来取消订阅

    • ステップ 1
        : pubsub-js を追加します
      PubSub.publish('myTopic','需要发送给订阅者的内容')
    • **ステップ 2 :**

      • yarn add pubsub-js
    • をコンポーネントにインポートします。 **ステップ 3: **PubSub サブスクリプション関数を呼び出します (通常は、componentDidMount フック関数でサブスクライブされます)

    import PubSub from 'pubsub-js'

    • #デモ

    List.jsx
        componentDidMount(){
          this.token=PubSub.subscribe("changeState",this.changeStateObj)
        }
    • Search.jsx

      import React, { Component } from 'react'
      import PubSub from 'pubsub-js'
      import './index.css'
      export default class List extends Component {
        state={
          users:[],//拿到的用户信息
          isFirst:true,//是否第一次访问
          isLoading:false,//是否正在加载
          err:"",//返回的错误信息
        
        }
      
        changeStateObj=(msg,value)=>{
          this.setState(value)
        }
      
        componentDidMount(){
          this.token=PubSub.subscribe("changeState",this.changeStateObj)
        }
        componentWillUnmount(){
          PubSub.unsubscribe(this.token)
        }
       
        render() {
          let {users,isFirst,isLoading,err}=this.state
          return (
            
              {           isFirst?

      输入搜索内容搜索用户

      :           isLoading?

      Loading...

      :           err?

      {err}

      :                    users.map(item=>{             return    
                                         バックエンドリクエストデータに反応する方法を実装する方法                                  

      {item.login}

                    
              })}                  
             )   } }
      • App.jsx
      import React, { Component } from 'react'
      import axios from 'axios'
      import './index.css'
      import PubSub from 'pubsub-js'
      
      export default class Search extends Component {
        
      
        search = () => {
          //获取输入框中的值
          const { value } = this.keyWordElement;
          PubSub.publish('changeState',{isFirst:false,isLoading:true})
          //发送请求
          axios.get(`/api1/search/users2?q=${value}`).then(
            result => {
              PubSub.publish('changeState',{isLoading:false,users:result.data.items})
      
            },
            reason => {
              PubSub.publish('changeState',{isLoading:false,err:reason.message})
      
            })
        }
      
      
      
        render() {
          return (
            <section>
              <h3 id="搜索github用户">搜索github用户</h3>
              <div>
                <input> this.keyWordElement = c} type="text" placeholder="enter the name you search" /> <button>搜索</button>
              </div>
            </section>
          )
        }
      }

      Ajax リクエストを送信するにはどのような方法がありますか?

      xhr:xmlHttpRequest: 従来の ajaxjQuery: カプセル化された xhr

      axios: カプセル化された xhr

      **fetch (fetch)?* ウィンドウに組み込まれており、サードパーティのライブラリを借用する必要はなく、直接使用できます。欠点: 現時点ではあまり役に立ちません。リクエスト送信インターセプターがありません

      • xhr
      • フェッチ
        • 欠点
        : 低い互換性

      利点: xhrを使用する必要がなく、サードパーティのライブラリをインストールする必要がなく、ネイティブ

      バックエンドリクエストデータに反応する方法を実装する方法

      fetch を記述する最良の方法

      import React, { Component } from 'react'
      import Search from './components/Search'
      import List from './components/List'
      import './App.css'
      
      export default class App extends Component {
      
      
      
        render() {
          return (
            <div>
              <search></search>
              <list></list>
            </div>
          )
        }
      }
      は、「
        react ビデオ チュートリアル
      • 」を学ぶことをお勧めします
    • 以上がバックエンドリクエストデータに反応する方法を実装する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

      声明
      この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
      Reactの強力なコミュニティとエコシステムの利点Reactの強力なコミュニティとエコシステムの利点Apr 29, 2025 am 12:46 AM

      反応の反応は、反応すること:1)即時カクセスソリューションスループラットフループラットフルフルフローアンドGithub;

      モバイル開発のためのネイティブの反応:クロスプラットフォームアプリの構築モバイル開発のためのネイティブの反応:クロスプラットフォームアプリの構築Apr 29, 2025 am 12:43 AM

      ReactNativeIsCosenformedeveledementBecauseDevelowSowRiteCodeOdeCodeOdeCodeandedDeployitOnMultPlatforms、ReducingDevelopmentTimeandCosts.ItOfferSnear-NativePerformance、Athrive-community、AndleverageSexistingwebdevelyments.keytomatherinere

      ReactのuseState()で状態を正しく更新しますReactのuseState()で状態を正しく更新しますApr 29, 2025 am 12:42 AM

      ReactのuseState()状態の正しい更新には、州の管理の詳細を理解する必要があります。 1)機能的な更新を使用して、非同期更新を処理します。 2)状態を直接変更しないように、新しい状態オブジェクトまたは配列を作成します。 3)単一の状態オブジェクトを使用して、複雑なフォームを管理します。 4)アンチシェイクテクノロジーを使用して、パフォーマンスを最適化します。これらの方法は、開発者が一般的な問題を回避し、より堅牢なReactアプリケーションを作成するのに役立ちます。

      Reactのコンポーネントベースのアーキテクチャ:スケーラブルなUI開発の鍵Reactのコンポーネントベースのアーキテクチャ:スケーラブルなUI開発の鍵Apr 29, 2025 am 12:33 AM

      Reactのコンポーネントアーキテクチャにより、モジュール性、再利用性、保守性を通じて、スケーラブルなUI開発を効率的にします。 1)モジュール性により、UIを独立して開発およびテストできるコンポーネントに分解できます。 2)コンポーネントの再利用性は時間を節約し、さまざまなプロジェクトの一貫性を維持します。 3)メンテナビリティにより問題のあるポジショニングと更新が容易になりますが、コンポーネントを過剰な普及と深いネスティングを回避する必要があります。

      Reactによる宣言プログラミング:UIロジックの簡素化Reactによる宣言プログラミング:UIロジックの簡素化Apr 29, 2025 am 12:06 AM

      Reactでは、宣言的なプログラミングは、UIの望ましい状態を記述することにより、UIロジックを簡素化します。 1)UIステータスを定義することにより、ReactはDOMの更新を自動的に処理します。 2)この方法により、コードのメンテナンスがより明確かつ容易になります。 3)しかし、国家管理の複雑さと最適化された再レンダリングに注意を払う必要があります。

      Reactのエコシステムのサイズ:複雑な風景をナビゲートしますReactのエコシステムのサイズ:複雑な風景をナビゲートしますApr 28, 2025 am 12:21 AM

      tonavigatereAct'somplexEcosystemively、理解を理解し、認識していることを認識していることを認識しているandweakness、およびIntegreatemtoemtoemtoemtemtemtemtemtemtemtemtemtemtemtemtemtemtemtemtemtemtemtemtemtemtemtemtemtemtemtemtemtemotereconceptate、その後、勾配内で測定する

      どのようにReactがキーを使用してリスト項目を効率的に識別しますどのようにReactがキーを使用してリスト項目を効率的に識別しますApr 28, 2025 am 12:20 AM

      RactuseSeSeSeSeSeSeSeSpiffictifideidifiedItemsbyprovidingastableidentitytoeeedelement.1)keysallowReactTotTotTotTotTotTotTotTotTotTotTotTotTotTotTotRACKESOUTRE-RENDERINGTHEENTERELIST.2)chookiniqueandstablekeys、avolididingArrayIndi​​ces.3)reforceAsificlySificlySiflovedobrovesiondanc

      Reactにおける重要な問題のデバッグ:問題の特定と解決Reactにおける重要な問題のデバッグ:問題の特定と解決Apr 28, 2025 am 12:17 AM

      KeysinReactarecrucialforoptimizingTherenderingProcessandDynamicListseffective.tospotandfixkey-relatedissues:1)adduniquekeystolistiTemstoavoidsissusisus、2)useuniqueidideididifiersfromdateadceSofofordiceys、3)

      See all articles

      ホットAIツール

      Undresser.AI Undress

      Undresser.AI Undress

      リアルなヌード写真を作成する AI 搭載アプリ

      AI Clothes Remover

      AI Clothes Remover

      写真から衣服を削除するオンライン AI ツール。

      Undress AI Tool

      Undress AI Tool

      脱衣画像を無料で

      Clothoff.io

      Clothoff.io

      AI衣類リムーバー

      Video Face Swap

      Video Face Swap

      完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

      ホットツール

      EditPlus 中国語クラック版

      EditPlus 中国語クラック版

      サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません

      SublimeText3 中国語版

      SublimeText3 中国語版

      中国語版、とても使いやすい

      WebStorm Mac版

      WebStorm Mac版

      便利なJavaScript開発ツール

      ZendStudio 13.5.1 Mac

      ZendStudio 13.5.1 Mac

      強力な PHP 統合開発環境

      SublimeText3 Mac版

      SublimeText3 Mac版

      神レベルのコード編集ソフト(SublimeText3)