react http請求應該放在componentDidMount中去操作,這是對於非同步請求來說的;而對於同步的狀態改變,react網路請求可以放在componentWillMount中,一般用的比較少。
本教學操作環境:Windows10系統、react18.0.0版、Dell G3電腦。
react http請求放在哪裡? React網路請求到底該放在哪個生命週期?
總的來說,對於非同步請求,最好放在componentDidMount中去操作,對於同步的狀態改變,可以放在componentWillMount中,一般用的比較少。
如果認為在componentWillMount裡發起請求能提早獲得結果,這種想法其實是錯誤的,通常componentWillMount比componentDidMount早不了多少微秒,網絡上任何一點延遲,這一點差異都可忽略不計。
看看react的生命週期:
constructor() ----> componentWillMount() ----> render() ----> componentDidMount()
上面這些方法的呼叫是有次序的,由上而下依序呼叫。
constructor被呼叫是在元件準備要掛載的最開始,此時元件尚未掛載到網頁上。
componentWillMount方法的呼叫在constructor之後,在render之前,在這方法裡的程式碼呼叫setState方法不會觸發重新render,所以它一般不會用來作載入資料之用。
componentDidMount方法中的程式碼,是在元件已經完全掛載到網頁上才會被呼叫被執行,所以可以確保資料的載入。此外,在這方法中呼叫setState方法,會觸發重新渲染。所以,官方設計這個方法就是用來載入外部資料用的,或是處理其他的副作用程式碼。與元件上的資料無關的加載,也可以在constructor裡做,但constructor是做元件state初紿化工作,並不是做載入資料這工作的,constructor裡也不能setState,還有載入的時間太長或者出錯,頁面就無法載入出來。所以有副作用的程式碼都會集中在componentDidMount方法裡。
總結:
1.跟伺服器端渲染(同構)有關係,如果在componentWillMount裡面取得數據,fetch data會執行兩次,一次在伺服器端一次在客戶端。在componentDidMount可以解決這個問題,componentWillMount同樣也會render兩次。
2.在componentWillMount中fetch data,資料一定在render後才能到達,如果你忘了設定初始狀態,使用者體驗不好。
3.react16.0以後,componentWillMount可能會被執行多次。
推薦學習:《react影片教學》
以上是react http請求放在哪的詳細內容。更多資訊請關注PHP中文網其他相關文章!

Springboot内置tomcat禁止不安全HTTP方法1、在tomcat的web.xml中可以配置如下内容让tomcat禁止不安全的HTTP方法/*PUTDELETEHEADOPTIONSTRACEBASIC2、Springboot使用内置tomcat没有web.xml配置文件,可以通过以下配置进行,简单来说就是要注入到Spring容器中@ConfigurationpublicclassTomcatConfig{@BeanpublicEmbeddedServletContainerFacto

1.HttpURLConnection使用JDK原生提供的net,无需其他jar包,代码如下:importcom.alibaba.fastjson.JSON;importjava.io.BufferedReader;importjava.io.InputStream;importjava.io.InputStreamReader;importjava.io.OutputStream;importjava.net.HttpURLConnection;

一、前言#ssl写在443端口后面。这样http和https的链接都可以用listen443sslhttp2default_server;server_namechat.chengxinsong.cn;#hsts的合理使用,max-age表明hsts在浏览器中的缓存时间,includesubdomainscam参数指定应该在所有子域上启用hsts,preload参数表示预加载,通过strict-transport-security:max-age=0将缓存设置为0可以撤销hstsadd_head

随着互联网的不断发展和改善,Web服务器在速度和性能上的需求也越来越高。为了满足这样的需求,Nginx已经成功地掌握了HTTP2协议并将其融入其服务器的性能中。HTTP2协议要比早期的HTTP协议更加高效,但同时也存在着特定的安全问题。本文将为您详细介绍如何进行Nginx的HTTP2协议优化和安全设置。一、Nginx的HTTP2协议优化1.启用HTTP2在N

httpkeepalive在http早期,每个http请求都要求打开一个tpcsocket连接,并且使用一次之后就断开这个tcp连接。使用keep-alive可以改善这种状态,即在一次tcp连接中可以持续发送多份数据而不会断开连接。通过使用keep-alive机制,可以减少tcp连接建立次数,也意味着可以减少time_wait状态连接,以此提高性能和提高httpd服务器的吞吐率(更少的tcp连接意味着更少的系统内核调用,socket的accept()和close()调用)。但是,keep-ali

一、urllib概述:urllib是Python中请求url连接的官方标准库,就是你安装了python,这个库就已经可以直接使用了,基本上涵盖了基础的网络请求功能。在Python2中主要为urllib和urllib2,在Python3中整合成了urllib。Python3.x中将urllib2合并到了urllib,之后此包分成了以下四个模块:urllib.request:它是最基本的http请求模块,用来模拟发送请求urllib.error:异常处理模块,如果出现错误可以捕获这些异常urllib

一、概述在实际开发过程中,我们经常需要调用对方提供的接口或测试自己写的接口是否合适。很多项目都会封装规定好本身项目的接口规范,所以大多数需要去调用对方提供的接口或第三方接口(短信、天气等)。在Java项目中调用第三方接口的方式有:1、通过JDK网络类Java.net.HttpURLConnection;2、通过common封装好的HttpClient;3、通过Apache封装好的CloseableHttpClient;4、通过SpringBoot-RestTemplate;二、Java调用第三方

被动检查对于被动健康检查,nginx和nginxplus会在事件发生时对其进行监控,并尝试恢复失败的连接。如果仍然无法恢复正常,nginx开源版和nginxplus会将服务器标记为不可用,并暂时停止向其发送请求,直到它再次标记为活动状态。上游服务器标记为不可用的条件是为每个上游服务器定义的,其中包含块中server指令的参数upstream:fail_timeout-设置服务器标记为不可用时必须进行多次失败尝试的时间,以及服务器标记为不可用的时间(默认为10秒)。max_fails-设置在fai


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

mPDF
mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),

SublimeText3漢化版
中文版,非常好用

EditPlus 中文破解版
體積小,語法高亮,不支援程式碼提示功能

VSCode Windows 64位元 下載
微軟推出的免費、功能強大的一款IDE編輯器