多個組件
調(diào)用A組件
的某個方法fn
,以實現(xiàn)A組件
的內(nèi)部數(shù)據(jù)保存。
而且這個fn
是動態(tài)的,根據(jù)不同的組件而變化。
只要拿到A組件
的實例,就可以調(diào)用和修改fn
但不知道如何拿到組件的實例?或者其他方式?
謝謝~
ref
this.xxx=React.createRef()
class A extends PureComponent{
constructor(props){
super(props);
this.name=props.name;
}
show(){
alert(this.name)
}
render(){
return(
<div>1</div>
)
}
}
class App extends PureComponent{
constructor(props){
super(props);
this.ref=React.createRef();
this.show=this.show.bind(this);
}
show(){
this.ref.current.show();
}
render(){
return[
<input type="button" value="show" onClick={this.show} />,
<A name={'A'} ref={this.ref} />
]
}
}
類似這樣?
首先我不清楚你的這種需求是怎么產(chǎn)生的。
多個組件調(diào)用A組件的某個方法fn
,這種完全可以根據(jù)組件通信去解決,不建議使用這種“黑科技”
如果只是學術上的問題 如何拿到組件的實例
那么很簡單,react提供了一種方法就是this.refs api
比如
// this.refs.div
<div ref="div" />
這個api已經(jīng)廢棄了,現(xiàn)在的寫法是這樣的
// this.div 現(xiàn)在就是div的引用了
<div ref={ref => this.div = ref} />
在最新的react16.3中api進行了再次升級,現(xiàn)在的寫法是這樣的。
class MyComponent extends React.Component {
constructor(props) {
super(props);
this.myRef = React.createRef();
}
render() {
// const node = this.myRef.current; 這樣可以拿到組件實例
return <div ref={this.myRef} />;
}
}
建議直接看官方文檔, https://reactjs.org/docs/refs...
希望我的回答對你有幫助。
北大青鳥APTECH成立于1999年。依托北京大學優(yōu)質(zhì)雄厚的教育資源和背景,秉承“教育改變生活”的發(fā)展理念,致力于培養(yǎng)中國IT技能型緊缺人才,是大數(shù)據(jù)專業(yè)的國家
北大青鳥中博軟件學院創(chuàng)立于2003年,作為華東區(qū)著名互聯(lián)網(wǎng)學院和江蘇省首批服務外包人才培訓基地,中博成功培育了近30000名軟件工程師走向高薪崗位,合作企業(yè)超4
中公教育集團創(chuàng)建于1999年,經(jīng)過二十年潛心發(fā)展,已由一家北大畢業(yè)生自主創(chuàng)業(yè)的信息技術與教育服務機構,發(fā)展為教育服務業(yè)的綜合性企業(yè)集團,成為集合面授教學培訓、網(wǎng)
達內(nèi)教育集團成立于2002年,是一家由留學海歸創(chuàng)辦的高端職業(yè)教育培訓機構,是中國一站式人才培養(yǎng)平臺、一站式人才輸送平臺。2014年4月3日在美國成功上市,融資1
浪潮集團項目經(jīng)理。精通Java與.NET 技術, 熟練的跨平臺面向對象開發(fā)經(jīng)驗,技術功底深厚。 授課風格 授課風格清新自然、條理清晰、主次分明、重點難點突出、引人入勝。
曾工作于聯(lián)想擔任系統(tǒng)開發(fā)工程師,曾在博彥科技股份有限公司擔任項目經(jīng)理從事移動互聯(lián)網(wǎng)管理及研發(fā)工作,曾創(chuàng)辦藍懿科技有限責任公司從事總經(jīng)理職務負責iOS教學及管理工作。
精通HTML5和CSS3;Javascript及主流js庫,具有快速界面開發(fā)的能力,對瀏覽器兼容性、前端性能優(yōu)化等有深入理解。精通網(wǎng)頁制作和網(wǎng)頁游戲開發(fā)。
具有10 年的Java 企業(yè)應用開發(fā)經(jīng)驗。曾經(jīng)歷任德國Software AG 技術顧問,美國Dachieve 系統(tǒng)架構師,美國AngelEngineers Inc. 系統(tǒng)架構師。