網(wǎng)站首頁 編程語言 正文
React中的render()
1、render()
是 class 組件中唯一必須實(shí)現(xiàn)的方法
2、當(dāng) render 被調(diào)用時
它會檢查 this.props 和 this.state 的變化并返回以下類型之一:
(1)React 元素。通常通過 JSX 創(chuàng)建。例如,<div /> 會被 React 渲染為 DOM 節(jié)點(diǎn),<MyComponent /> 會被 React 渲染為自定義組件,無論是 <div /> 還是 <MyComponent /> 均為 React 元素。
(2)數(shù)組或 fragments。 使得 render 方法可以返回多個元素。
(3)Portals??梢凿秩咀庸?jié)點(diǎn)到不同的 DOM 子樹中。
(4)字符串或數(shù)值類型。它們在 DOM 中會被渲染為文本節(jié)點(diǎn)
(5)布爾類型或 null。什么都不渲染。(主要用于支持返回 test && <Child /> 的模式,其中 test 為布爾類型。)
3、render() 函數(shù)應(yīng)該為純函數(shù)
這意味著在不修改組件 state 的情況下,每次調(diào)用時都返回相同的結(jié)果,并且它不會直接與瀏覽器交互。
4、如需與瀏覽器進(jìn)行交互
請在 componentDidMount() 或其他生命周期方法中執(zhí)行你的操作。保持 render() 為純函數(shù),可以使組件更容易使用、維護(hù)。
5、在React.Component類
的子類中會重新定義(實(shí)現(xiàn))
6、在react中觸發(fā)render的有4條路徑
以下假設(shè)shouldComponentUpdate都是按照默認(rèn)返回true的方式。
(1)首次渲染Initial Render
(2)調(diào)用this.setState (并不是一次setState會觸發(fā)一次render,React可能會合并操作,再一次性進(jìn)行render)
(3)父組件發(fā)生更新(一般就是props發(fā)生改變,但是就算props沒有改變或者父子組件之間沒有數(shù)據(jù)交換也會觸發(fā)render)
(4)調(diào)用this.forceUpdate
7、生命周期流程圖(來源于官網(wǎng))
注意:如果在shouldComponentUpdate里面返回false可以提前退出更新路徑
React render在什么時候會被觸發(fā)?
在 React 中,只要執(zhí)行了 setState 方法,就一定會觸發(fā) render 函數(shù)執(zhí)行;
組件的 props 改變了,不一定觸發(fā) render 函數(shù)的執(zhí)行,除非 props 的值來自于父組件或者祖先組件的 state?
總結(jié)
原文鏈接:https://blog.csdn.net/Han_Zhou_Z/article/details/123326000
相關(guān)推薦
- 2022-07-07 Python自動化辦公之Word文檔的創(chuàng)建與生成_python
- 2022-05-09 pytorch中的hook機(jī)制register_forward_hook_python
- 2023-03-20 C#?EF去除重復(fù)列DistinctBy方式_C#教程
- 2022-05-04 Django點(diǎn)贊的實(shí)現(xiàn)示例_python
- 2022-04-11 解決git 錯誤error: failed to push some refs to......
- 2022-09-17 C++詳解PIMPL指向?qū)崿F(xiàn)的指針_C 語言
- 2022-06-02 Pandas數(shù)據(jù)結(jié)構(gòu)之Series的使用_python
- 2022-01-28 laravel try異常abort只報出最外層
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細(xì)win安裝深度學(xué)習(xí)環(huán)境2025年最新版(
- Linux 中運(yùn)行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎(chǔ)操作-- 運(yùn)算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認(rèn)證信息的處理
- Spring Security之認(rèn)證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權(quán)
- redisson分布式鎖中waittime的設(shè)
- maven:解決release錯誤:Artif
- restTemplate使用總結(jié)
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實(shí)現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務(wù)發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結(jié)構(gòu)-簡單動態(tài)字符串(SD
- arthas操作spring被代理目標(biāo)對象命令
- Spring中的單例模式應(yīng)用詳解
- 聊聊消息隊列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠(yuǎn)程分支