电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

React中的useEffect四種用法分享

瀏覽:5日期:2022-06-13 09:41:17
目錄什么是 useEffect ?1 : useEffect 中 觸發更新2 : 用法2 重復的 useEffect3 :依賴值觸發回調4 :useEffect 的返回值結束啦什么是 useEffect ?

官方解釋 : useEffect 是一個 React Hook,它允許你將組件與外部系統同步。

什么意思 ? 個人理解就是 它能根據不同的依賴值或者返回值,在不同的時機進行執行。

我們先來說說 第一種用法

1 : useEffect 中 觸發更新

示例1 : 當我們在組件創建的過程,自動執行某些操作的時候 , 那我們可以在函數式組件中這樣

錯誤示例

import { useEffect } from 'react'function App () {const [ count , setCount] = useState(0)useEffect(()=> { initData()})const initData = () => { setCount(count + 1)}return ( <div> {count} </div> )}

如果你這種用 useEffect 你會發現 什么問題 ?

當我們組件 渲染完成去執行 useEffect 調用 initData 函數 函數通過 setCount 設置值觸發更新,一旦更新 useEffect 又會在渲染的最后執行,這樣就照成了 死循環

所以 你應該這樣寫 ,傳入 useEffect 第二個參數 空數組,代表組件渲染過程中只執行一次

正確示例

import { useEffect } from 'react'function App () {const [ count , setCount] = useState(0)useEffect(()=> { initData()}, [])const initData = () => {setCount(count + 1)}return ( <div> {count} </div> )}2 : 用法2 重復的 useEffect

示例2 : 當我們在組件渲染的過程中 ,如果你寫了多個useEffect 它會怎么做 ?

import { useEffect, useState } from 'react';function Effect() { const [count, setCount] = useState(0) useEffect(() => { console.log('111'); }) useEffect(() => { console.log('222'); }) return (<div> {count} </div>)}export default Effect

想當然 , 它不會覆蓋前面的 useEffect ,會根據你的 編寫順序進行收集,然后循環執行(當然這只是我的猜測,暫時還沒看react源碼)

3 :依賴值觸發回調

當你想去依賴某些變量的時候去觸發回調函數,你可以這樣。

import { useEffect, useState } from 'react';function Effect() { const [count, setCount] = useState(0) useEffect(() => { console.log('count發生了變化最新值為' + count); }, [count]) return (<div> <div> {count} </div> <button onClick={() => setCount(count + 1)}>加1</button> </div>)}export default Effect

當你的第二個參數是數組,并且是依賴項,組件初次渲染也會執行,這是為什么呢 ?

解答 : 如果從 react useState Hook 來說,也就是 react 將你傳入的 默認值 給你重新賦值了,所以發生了變化,因此 useEffect 發生了更新

4 :useEffect 的返回值

當useEffect 傳入的 回調函數有返回值時并且為一個 函數的時候,它會怎么做?

import { useEffect, useState } from 'react';const Room = () => { useEffect(() => { console.log('子組件渲染完成') return () => { console.log('子組件useeffect 回調函數執行') } }, []) return (<div> 這是我的房間 , 大家一起來玩呀 </div>)}function Effect() { const [show, setShow] = useState(true) return (<div> <div> {show && <Room></Room>} </div> <button onClick={() => setShow(!show)}>加1</button> </div>)}export default Effect

解答 : useEffect函數 的返回值 如果是函數時 它會在組件銷毀的時候自動回調該函數,你可以在該函數中做一些清理操作,等等

結束啦

好了,最后到這次本章了解的知識就到此結束了,如果有哪里寫的不對的地方或者有更好的使用方式,歡迎大家在評論區留言!

到此這篇關于React中的useEffect四種用法分享的文章就介紹到這了,更多相關React useEffect用法內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: JavaScript
主站蜘蛛池模板: 灌木树苗-绿化苗木-常绿乔木-价格/批发/基地 - 四川成都途美园林 | 环球电气之家-中国专业电气电子产品行业服务网站! | 北京公寓出租网-北京酒店式公寓出租平台| 拉力机-拉力试验机-万能试验机-电子拉力机-拉伸试验机-剥离强度试验机-苏州皖仪实验仪器有限公司 | 旋振筛|圆形摇摆筛|直线振动筛|滚筒筛|压榨机|河南天众机械设备有限公司 | 网站制作优化_网站SEO推广解决方案-无锡首宸信息科技公司 | 撕碎机_轮胎破碎机_粉碎机_回收生产线厂家_东莞华达机械有限公司 | 滚珠丝杆升降机_螺旋升降机_丝杠升降机-德迈传动 | 苹果售后维修点查询,苹果iPhone授权售后维修服务中心 – 修果网 拼装地板,悬浮地板厂家,悬浮式拼装运动地板-石家庄博超地板科技有限公司 | 济南品牌包装设计公司_济南VI标志设计公司_山东锐尚文化传播 | 外贮压-柜式-悬挂式-七氟丙烷-灭火器-灭火系统-药剂-价格-厂家-IG541-混合气体-贮压-非贮压-超细干粉-自动-灭火装置-气体灭火设备-探火管灭火厂家-东莞汇建消防科技有限公司 | 净化工程_无尘车间_无尘车间装修-广州科凌净化工程有限公司 | 软瓷_柔性面砖_软瓷砖_柔性石材_MCM软瓷厂家_湖北博悦佳软瓷 | 螺旋丝杆升降机-SWL蜗轮-滚珠丝杆升降机厂家-山东明泰传动机械有限公司 | 甲级防雷检测仪-乙级防雷检测仪厂家-上海胜绪电气有限公司 | 杭州双螺杆挤出机-百科 | 阳光模拟试验箱_高低温试验箱_高低温冲击试验箱_快速温变试验箱|东莞市赛思检测设备有限公司 | 北京银联移动POS机办理_收银POS机_智能pos机_刷卡机_收银系统_个人POS机-谷骐科技【官网】 | 潍坊青州古城旅游景点攻略_青州酒店美食推荐-青州旅游网 | 宝元数控系统|对刀仪厂家|东莞机器人控制系统|东莞安川伺服-【鑫天驰智能科技】 | 广州办公室设计,办公室装修,写字楼设计,办公室装修公司_德科 | 上海诺狮景观规划设计有限公司| 软文发布-新闻发布推广平台-代写文章-网络广告营销-自助发稿公司媒介星 | 网站优化公司_北京网站优化_抖音短视频代运营_抖音关键词seo优化排名-通则达网络 | 玉米深加工设备|玉米加工机械|玉米加工设备|玉米深加工机械-河南成立粮油机械有限公司 | 环氧乙烷灭菌器_压力蒸汽灭菌器_低温等离子过氧化氢灭菌器 _低温蒸汽甲醛灭菌器_清洗工作站_医用干燥柜_灭菌耗材-环氧乙烷灭菌器_脉动真空压力蒸汽灭菌器_低温等离子灭菌设备_河南省三强医疗器械有限责任公司 | 中国品牌门窗网_中国十大门窗品牌_著名门窗品牌 | 纸箱网 -纸箱机械|设备|包装纸盒|包装印刷行业门户网站 | 十二星座查询(性格特点分析、星座运势解读) - 玄米星座网 | 进口试验机价格-进口生物材料试验机-西安卡夫曼测控技术有限公司 | 澳威全屋定制官网|极简衣柜十大品牌|衣柜加盟代理|全屋定制招商 百度爱采购运营研究社社群-店铺托管-爱采购代运营-良言多米网络公司 | 整合营销推广|营销网络推广公司|石家庄网站优化推广公司|智营销 好物生环保网、环保论坛 - 环保人的学习交流平台 | 土壤检测仪器_行星式球磨仪_土壤团粒分析仪厂家_山东莱恩德智能科技有限公司 | 石家庄救护车出租_重症转院_跨省跨境医疗转送_活动赛事医疗保障_康复出院_放弃治疗_腾康26年医疗护送转诊团队 | 穿线管|波纹穿线管|包塑金属软管|蛇皮管?闵彬专注弱电工程? | 钢制拖链生产厂家-全封闭钢制拖链-能源钢铝拖链-工程塑料拖链-河北汉洋机械制造有限公司 | ASA膜,ASA共挤料,篷布色母料-青岛未来化学有限公司 | 基业箱_环网柜_配电柜厂家_开关柜厂家_开关断路器-东莞基业电气设备有限公司 | 间甲酚,间甲酚厂家-山东祥东新材料 | PE拉伸缠绕膜,拉伸缠绕膜厂家,纳米缠绕膜-山东凯祥包装 | 密封圈_泛塞封_格莱圈-[东莞市国昊密封圈科技有限公司]专注密封圈定制生产厂家 |