摘要:屬性其實(shí)就是為了獲取節(jié)點(diǎn),例如屬性利用屬性返回的回調(diào)函數(shù)獲取節(jié)點(diǎn),從而讓頁面渲染完成之后,聚焦,除了可以綁定回調(diào)函數(shù)之外還能綁定字符串,但是在后期對字符串形式不再維護(hù),這里就不具體說明了,就用回調(diào)函數(shù)獲取。
ref屬性其實(shí)就是為了獲取DOM節(jié)點(diǎn),例如:
import React from "react" class RefComponent extends React.Component { componentDidMount(){ this.inputNode.focus(); } render() { return () } } export default RefComponent;ref屬性
this.inputNode = node}/>
利用ref屬性返回的回調(diào)函數(shù)獲取DOM節(jié)點(diǎn),從而讓頁面渲染完成之后,input聚焦,ref除了可以綁定回調(diào)函數(shù)之外還能綁定字符串,但是在后期react對字符串形式不再維護(hù),這里就不具體說明了,就用回調(diào)函數(shù)獲取DOM。
除了給input聚焦之外,還可以獲取當(dāng)前DOM節(jié)點(diǎn)的內(nèi)容,如下:
import React from "react" class RefComponent extends React.Component { componentDidMount(){ this.inputNode.focus(); console.log(this.texthtml); console.log(this.texthtml.innerHTML); } render() { return () } } export default RefComponent;ref屬性
this.inputNode = node}/>this.texthtml = node}>你好
輸出結(jié)果為:
你好你好
在這里,我們也發(fā)現(xiàn)一個問題,ref雖然獲取DOM節(jié)點(diǎn)很方便,但是如果ref用的多了,后期就不好維護(hù)了,所以,盡量能少用即少用。
ref除了可以給HTML標(biāo)簽添加,也可以給組件添加,例如:
import React from "react" import Button from "./button.js" class RefComponent extends React.Component { componentDidMount(){ this.inputNode.focus(); console.log(this.texthtml); console.log(this.texthtml.innerHTML); console.log(this.buttonNode); } render() { return () } } export default RefComponent;ref屬性
this.inputNode = node}/>this.texthtml = node}>你好
但是此時,this.buttonNode得到的是一個Button這個組件實(shí)例DOM
這里要注意一個問題,ref只能用在類定義的組件,不能用在函數(shù)組件,因?yàn)楹瘮?shù)組件沒有實(shí)例,比如以下寫法就是錯誤的:
import React from "react" function TestComponent() { return (函數(shù)組件); } class RefComponent extends React.Component { componentDidMount(){ console.log(this.testCom); } render() { return () } } export default RefComponent;函數(shù)組件
this.testCom = node}/>
如果這樣寫,則會報(bào)錯,并且this.testCom為undefined,因?yàn)榇藭r是獲取不到函數(shù)組件的實(shí)例的,所以以上寫法要注意
總結(jié): ref可以給HTML標(biāo)簽,類組件添加,但是不能給函數(shù)組件添加
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/97014.html
摘要:給賦值也是構(gòu)造函數(shù)的工作之一。在的構(gòu)造函數(shù)中,還給兩個成員函數(shù)綁定了當(dāng)前的執(zhí)行環(huán)境,因?yàn)榉绞絼?chuàng)建的組件并不自動給我們綁定到當(dāng)前實(shí)例對象。我們可以利用的功能,避免判斷邏輯這種充斥在構(gòu)造函數(shù)之中,讓代碼更優(yōu)。 React系列---React(一)初識ReactReact系列---React(二)組件的prop和stateReact系列---React(三)組件的生命周期 組件是React...
摘要:看它的源碼主要意義不在知道如何使用它,而是知道以后處理滾動加載要注意的東西。通過判斷不為的情況,確保滾動組件正常顯示和在無滾動的情況下,和相等,都為在有滾動的情況下,表示實(shí)際內(nèi)容高度,表示視口高度。 react-infinite-scroller就是一個組件,主要邏輯就是addEventListener綁定scroll事件。 看它的源碼主要意義不在知道如何使用它,而是知道以后處理滾動加...
摘要:定義一個組件可以在其他組件中調(diào)用這個組件調(diào)用組件劉宇組件插入內(nèi)容在上面的案例中可以看到吧寫到當(dāng)中,這種寫法稱為。 React初識 React是Facebook推出的一個javascript庫(用來創(chuàng)建用戶界面的Javascript庫),所以他只是和用戶的界面打交道,你可以把它看成MVC中的V(視圖)這一層。 組件 React的一切都是基于組件的。web世界的構(gòu)成是基于各種HTML標(biāo)簽的...
摘要:主要用于構(gòu)建,很多人認(rèn)為是中的視圖。函數(shù)接受另一個函數(shù)作為參數(shù),返回新生成的對象的變化,會導(dǎo)致的變化。用戶無法直接改變只能觸發(fā)上綁定的事件。表示應(yīng)該要發(fā)生變化了。允許使用方法設(shè)置監(jiān)聽函數(shù),一旦發(fā)生變化,就自動執(zhí)行這個函數(shù)。 什么是react React 是一個用于構(gòu)建用戶界面的 JAVASCRIPT 庫。React主要用于構(gòu)建UI,很多人認(rèn)為 React 是 MVC 中的 V(視圖)。...
閱讀 2986·2021-11-22 15:25
閱讀 2271·2021-11-18 10:07
閱讀 1075·2019-08-29 15:29
閱讀 499·2019-08-29 13:25
閱讀 1547·2019-08-29 12:58
閱讀 3230·2019-08-29 12:55
閱讀 2939·2019-08-29 12:28
閱讀 532·2019-08-29 12:16