摘要:綁定屬性調(diào)用的時(shí)候使用調(diào)用子組件方法這是一個(gè)很神奇的方法,它可以調(diào)用子組件的方法以及屬性。建立組件建立子組件,并在子組件實(shí)現(xiàn)一個(gè)方法,如,這個(gè)方法實(shí)現(xiàn)變更當(dāng)前組件上面的文本,提供這樣一個(gè)測(cè)試用例。輸入框獲取焦點(diǎn)完整實(shí)例點(diǎn)我輸入框獲取焦點(diǎn)
React 支持一種非常特殊的屬性 Ref ,你可以用來(lái)綁定到 render() 輸出的任何組件上。
ref : 綁定屬性
refs : 調(diào)用的時(shí)候使用
調(diào)用子組件方法這是一個(gè)很神奇的方法refs,它可以調(diào)用子組件的方法以及屬性。下面用一個(gè)例子來(lái)實(shí)現(xiàn)調(diào)用子組件方法。
建立組件建立子組件MyComponent.js,并在子組件實(shí)現(xiàn)一個(gè)方法,如:subHandleClick,這個(gè)方法實(shí)現(xiàn)變更當(dāng)前組件上面的文本,提供這樣一個(gè)測(cè)試用例。
使用子組件通過(guò)import SubComponent from "./SubComponent"來(lái)引用子組件SubComponent,在 render方法中注冊(cè)使用組件
render(){ return(綁定ref屬性) }
在子組件調(diào)用上面綁定一個(gè)值為subcomponents的屬性ref,subcomponents
調(diào)用子組件方法
在入口父組件App.js中,添加方法handleClick,去調(diào)用子組件SubComponent.js中的subHandleClick方法
handleClick(){ //this.refs.subcomponents可以訪(fǎng)問(wèn)子組件的方法 //也可以獲取子組件的state... this.refs.subcomponents.subHandleClick(); }完整實(shí)例
入口父組件App.js
import React, { Component } from "react"; import SubComponent from "./SubComponent" class MyComponent extends Component { handleClick(){ this.refs.subcomponents.subHandleClick(); } render(){ return() } } ReactDOM.render(, document.querySelector("#app") );
子組件SubComponent.js
import React, { Component } from "react"; export default class SubComponent extends Component { constructor(props) { super(props); this.state = { text: "這里是初始化文本" }; } subHandleClick(){ this.setState({text: "文本被改變啦!哈哈!"}) } render(){ return(訪(fǎng)問(wèn)父組件方法查看:{this.state.text}) } }
父組件Parent.js
class Parent extends React.Component{ constructor(props){ super(props); this.state = { value:"" } } refresh(){ // 這里箭頭函數(shù)很重要 return ()=>{ this.setState({value:"這里是子組件調(diào)用的方法"}) } } render(){ return () } } ReactDOM.render(兄弟組件溝通
{this.state.value}
, document.getElementById("app"));
子組件SubComponent.js
import React, { Component } from "react"; export default class SubComponent extends Component { constructor(props) { super(props); } subHandleClick(){ this.setState({text: "文本被改變啦!哈哈!"}) } render(){ return(獲取DOM實(shí)例) } }
通過(guò)ref屬性,你可獲取,實(shí)例中的屬性方法,甚至可以通過(guò)他獲取到DOM實(shí)例節(jié)點(diǎn)this.refs.myInput.getDOMNode()
ref 屬性綁定 refs 獲取DOM實(shí)例獲取支撐實(shí)例( backing instance )。這樣就可以確保在任何時(shí)間總是拿到正確的實(shí)例。
// 輸入框獲取焦點(diǎn) this.refs.myInput.focus()完整實(shí)例
import React, { Component } from "react"; class MyComponent extends Component { handleClick(){ this.refs.myInput.focus(); } render(){ return() } } ReactDOM.render(, document.querySelector("#app") );
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/87836.html
摘要:通常在組件的構(gòu)造函數(shù)內(nèi)創(chuàng)建,使其在整個(gè)組件中可用。例如純文本查看復(fù)制代碼如上所示一個(gè)實(shí)例在構(gòu)造函數(shù)中創(chuàng)建,并賦值給在方法內(nèi)部,將構(gòu)造函數(shù)中創(chuàng)建的傳遞給接下來(lái),讓我們看一個(gè)在組件中使用的示例。回調(diào)回調(diào)是在中使用的另一種方式。 使用 React 時(shí),我們的默認(rèn)思維方式應(yīng)該是 不會(huì)強(qiáng)制修改 DOM ,而是通過(guò)傳入 props 重新渲染組件。但是,有些情況卻無(wú)法避免修改 DOM 。React ...
摘要:一個(gè)組件的生命周期分為三個(gè)部分實(shí)例化存在期和銷(xiāo)毀時(shí)。如果回調(diào)函數(shù)以函數(shù)的方式來(lái)指定,那么在組件更新的時(shí)候回調(diào)會(huì)被調(diào)用次。 一個(gè)React組件的生命周期分為三個(gè)部分:實(shí)例化、存在期和銷(xiāo)毀時(shí)。 實(shí)例化階段 客戶(hù)端渲染時(shí),如下依次被調(diào)用 getDefaultProps() getInitialState() componentWillMount() render() component...
摘要:基礎(chǔ)創(chuàng)建虛擬參數(shù)元素名稱(chēng),例如參數(shù)屬性集合,例如,,,從參數(shù)開(kāi)始,表示該元素的子元素,通常這些元素通過(guò)創(chuàng)建,文本文件可以直接插入嘻嘻哈哈這是渲染器,將元素渲染到頁(yè)面中。 React簡(jiǎn)介 FeceBook開(kāi)源的一套框架,專(zhuān)注于MVC的視圖V模塊。實(shí)質(zhì)是對(duì)V視圖的一種實(shí)現(xiàn)。 React框架的設(shè)計(jì)沒(méi)有過(guò)分依賴(lài)于某個(gè)環(huán)境,它自建一套環(huán)境,就是virtual DOM(虛擬DOM)。 提供基礎(chǔ)AP...
摘要:指定讀取當(dāng)前的。它為其后代元素觸發(fā)額外的檢查和警告。嚴(yán)格模式檢查僅在開(kāi)發(fā)模式下運(yùn)行它們不會(huì)影響生產(chǎn)構(gòu)建。作用識(shí)別不安全的生命周期關(guān)于使用過(guò)時(shí)字符串的警告關(guān)于使用廢棄的方法的警告檢測(cè)意外的副作用檢測(cè)過(guò)時(shí)的為高階組件。 react 進(jìn)階 懶加載 React.lazy函數(shù)能讓你像渲染常規(guī)組件一樣處理動(dòng)態(tài)引入(的組件)。Suspense加載指示器為組件做優(yōu)雅降級(jí)。fallback屬性接受任何在...
閱讀 1134·2021-09-22 15:32
閱讀 1731·2019-08-30 15:53
閱讀 3263·2019-08-30 15:53
閱讀 1418·2019-08-30 15:43
閱讀 460·2019-08-28 18:28
閱讀 2575·2019-08-26 18:18
閱讀 676·2019-08-26 13:58
閱讀 2534·2019-08-26 12:10