成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

UseState是干啥的?有哪些坑?

開發 前端
看下控制臺,你會發現有個問題,每次todolist組件重新渲染的時候,createInitialTodos方法都會重新運行一次,但是,只有第一次的返回結果被useState使用,如果createInitialTodos在做非常耗時的計算的話,這就很消耗性能了。

前面的筆記里面說過在React16.8之前,函數式組件里你沒辦法初始化并使用狀態(state),在React16.8之后,useState就很好的解決了這個問題,它可以讓你在函數式組件里面使用state。

簡單地說,你就把它當做函數組件里的setState來用就行了 基本用法:

用法很簡單,代碼如下:

圖片圖片

如上所示,你只需要useState傳入一個初始值,然后它返回一個數組,數組第一個變量是state,數組第二個變量就是類似setState的方法 我自己整理了一些使用useState需要注意的地方,可能你也需要。

注意點

初始值傳入方法

這個問題是有次在我的技術群里粉絲問到的,大概就是在公司的歷史代碼里看到useState初始化的時候傳入了一個function,感覺到這種用法很少見,后來我查閱了文檔,發現這個確實很有意思。

先看看這個官方例子:

圖片圖片

上面這個例子中,state的初始化我們是使用createInitialTodos這個方法來完成的。

看下控制臺,你會發現有個問題,每次todolist組件重新渲染的時候,createInitialTodos方法都會重新運行一次,但是,只有第一次的返回結果被useState使用,如果createInitialTodos在做非常耗時的計算的話,這就很消耗性能了。

所以,這里需要注意的是如果使用方法來初始化state,直接把它自身傳進去就行了,不用運行它,也就是下面這樣寫代碼:

圖片

基于最新的state來改變state

這個問題在類組件的setState中也比較常見,直接看代碼:

圖片

上面這個例子,你以為調用了setAge三次,它就會從0加到3,那就大錯特錯了。

事實上,state這個東西你可以把它理解為一個快照(snapshot),你更新了它,但是它只會在下次render的時候才改變,也就是說你這樣連著調用三次setAge(age+1),每次取得都是當前render中的快照,相當于每次都是setAge(42+1),所以,最終結果是43,并不是45。

那么如果我就想基于最新的state來改變state,代碼可以這樣寫:

圖片

也就是給setAge傳入方法,這個方法接受上一個狀態,返回新的狀態。

連續傳入三次方法,這三個方法就會進入隊列中并且依次執行,執行完畢之后得到45,最后就拿著45去更新age。

這個在官方文檔里面也叫做批量更新state,都是使用給狀態更新方法傳入回調來實現的。

責任編輯:武曉燕 來源: 程序員耳東
相關推薦

2021-08-13 05:47:48

通信設計院通信行業設計院

2019-05-20 15:44:11

盒裝智商稅CPU

2023-04-10 07:26:28

UseStateUseReducer

2022-03-09 12:26:04

MySQL高可用性主備延遲

2022-09-26 07:08:16

無線通信CT

2025-04-29 00:00:00

超節點SuperPod大模型

2020-02-15 15:02:44

產品技術設計團隊

2024-09-10 12:15:24

2024-03-04 07:37:40

MySQL記錄鎖

2022-10-17 00:27:20

二叉樹數組索引

2023-01-06 16:36:09

編程效率語言

2022-11-11 07:51:33

2024-04-18 08:38:15

LLM數據訓練模型

2020-06-15 08:51:58

數據庫存儲系統

2017-08-14 16:14:57

云原生容器云平臺

2024-08-26 15:31:55

2024-03-06 11:22:33

架構演進技巧

2013-11-06 10:03:44

Windows 8.1Windows 8.1

2009-07-03 10:31:57

什么是ServletServlet API

2012-09-24 10:25:42

BI軟件開源軟件
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 亚洲国产成人精品女人久久久 | 精品国产一区一区二区三亚瑟 | 欧美精品在线免费观看 | 亚洲一二三区在线观看 | 男女啪啪高潮无遮挡免费动态 | 国户精品久久久久久久久久久不卡 | 国产91在线 | 亚洲 | 亚洲一区二区黄 | 人人鲁人人莫人人爱精品 | 国产精品久久久久久久7777 | 亚洲精品高清视频在线观看 | 久久丁香| 在线看黄免费 | 日本精品在线播放 | 久久精品天堂 | 激情三区 | 欧美精品一级 | 国产亚洲成av人片在线观看桃 | 中文字幕一区二区三区精彩视频 | 激情视频网站 | 国产在线中文字幕 | 久久久精品一区 | 免费黄色片在线观看 | 日韩精品免费视频 | 欧美自拍一区 | 久久精品视频亚洲 | 看羞羞视频 | 国产精品欧美一区二区三区不卡 | av福利网 | 日韩不卡视频在线观看 | 国产精品18久久久久久久 | 欧美一级二级视频 | 国产一区二区影院 | 91毛片网| 毛片入口 | 中文字幕亚洲一区二区三区 | 精品久久久久久亚洲综合网 | 看羞羞视频 | 成人国产精品视频 | 精品二区 | 久久久久国产精品 |