網(wǎng)站首頁(yè) 編程語(yǔ)言 正文
1 介紹
react組件的三大屬性:
1.props
屬性:封裝傳遞給組件的參數(shù)
2.state
屬性:組件的狀態(tài),當(dāng)值發(fā)生改變后,重新渲染組件
3.refs
屬性:
(1)通過(guò)該屬性可以去訪問(wèn)DOM元素或render函數(shù)中的react元素(虛擬的DOM元素) ——DOM元素或render函數(shù)中的react元素的代理(句柄)
(2)本質(zhì)是ReactDOM.render()
函數(shù)返回的實(shí)例(組件實(shí)例或DOM節(jié)點(diǎn))
Refs在計(jì)算機(jī)中稱(chēng)為彈性文件系統(tǒng)。React中的Refs提供了一種方式,允許我們?cè)L問(wèn)DOM節(jié)點(diǎn)或在render方法中創(chuàng)建的React元素。本質(zhì)為ReactDOM.render()
返回的組件實(shí)例,如果是渲染組件則返回的是組件實(shí)例,如果渲染dom則返回的是具體的dom節(jié)點(diǎn)。
作用:Refs時(shí)React提供給我們安全訪問(wèn)DOM元素或者某個(gè)組件實(shí)例的句柄。在類(lèi)組件中,React將ref屬性中第一個(gè)參數(shù)作為DOM中的句柄。在函數(shù)組件中,React用hooks的api useRef也能獲得ref。
2 使用方法
2.1 createRef(版本>=React16.3)
一般在構(gòu)造函數(shù)中將refs分配給實(shí)例屬性,以供組件的其他方法中使用。
1、對(duì)于html元素:可以獲取元素實(shí)例
示例代碼:
class Refs extends React.Component { constructor(props) { super(props); // 在構(gòu)造函數(shù)中初始化一個(gè)ref,然后在return中就可以使用了 this.myRef = React.createRef(); console.log(this.myRef); } componentDidMount() { // 在render()函數(shù)執(zhí)行完成后調(diào)用 this.myRef.current.innerHTML = "橘貓吃不胖"; // this.myRef中有一個(gè)current屬性 } render() { return ({/*如果ref屬性被用于html,那么它的值就是底層DOM元素*/}); } }
2、可以和類(lèi)組件進(jìn)行綁定 —— 代表類(lèi)組件的實(shí)例
示例代碼:
class Refs extends React.Component { constructor(props) { super(props); this.myRef = React.createRef(); } componentDidMount() { // 在父組件中調(diào)用了子組件的方法 this.myRef.current.change(); } render() { return} } class Children extends React.Component { change() { console.log("橘貓吃不胖變身"); } render() { return 橘貓吃不胖 } }
2.2 回調(diào)Refs
React將在組件掛載時(shí),會(huì)調(diào)用ref回調(diào)函數(shù)并傳入DOM怨怒是,當(dāng)卸載時(shí)調(diào)用它并傳入null。早componentDidMount或componentDidUpdate觸發(fā)前,React會(huì)保證refs一定是最新的。
示例代碼:
class Refs extends React.Component { constructor(props) { super(props); this.targetRef = null; this.myRef = (e) => this.targetRef = e; } componentDidMount() { console.log("this.refs" + this.refs.container); } render() { return橘貓吃不胖} }
2.3 String類(lèi)型的Refs(已過(guò)時(shí),不推薦使用)
示例代碼:
class Refs extends React.Component { constructor(props) { super(props); this.targetRef = null; this.myRef = (e) => this.targetRef = e; } componentDidMount() { console.log("this.refs" + this.refs.container); } render() { return橘貓吃不胖} }
2.4 useRef(React Hooks)
function HookRef(props) { const inputElement = useRef(); return () }
總結(jié)
原文鏈接:https://blog.csdn.net/m0_46612221/article/details/123360259
相關(guān)推薦
- 2023-05-31 Pandas多個(gè)條件(AND,OR,NOT)中提取行_python
- 2022-07-27 shell腳本中一鍵部署zookeeper集群服務(wù)的方法_linux shell
- 2022-03-20 關(guān)于數(shù)據(jù)庫(kù)系統(tǒng)的概述_數(shù)據(jù)庫(kù)其它
- 2022-09-09 React前端DOM常見(jiàn)Hook封裝示例下_React
- 2024-01-11 源碼解析list.contains()方法,比較集合中的是存在某對(duì)象
- 2022-02-10 Linux環(huán)境下安裝docker環(huán)境(親測(cè)無(wú)坑)_docker
- 2024-02-16 ReentrantLock相較于synchronized的區(qū)別---鎖超時(shí)(源碼理解)
- 2022-09-23 Matlab幾個(gè)常用的繪圖顏色搭配推薦_相關(guān)技巧
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細(xì)win安裝深度學(xué)習(xí)環(huán)境2025年最新版(
- Linux 中運(yùn)行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲(chǔ)小
- 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)證過(guò)濾器
- Spring Security概述快速入門(mén)
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權(quán)
- redisson分布式鎖中waittime的設(shè)
- maven:解決release錯(cuò)誤: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)-簡(jiǎn)單動(dòng)態(tài)字符串(SD
- arthas操作spring被代理目標(biāo)對(duì)象命令
- Spring中的單例模式應(yīng)用詳解
- 聊聊消息隊(duì)列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠(yuǎn)程分支