目前我的方法是,用一個(gè)全局變量將子組件render時(shí)的虛擬dom實(shí)例保存下來(lái),以方便在父組件中調(diào)用。那么問(wèn)題就是如何不用變量直接在父組件中直接拿到子組件的虛擬dom呢?//?全局變量,用于記錄每個(gè)子組件的虛擬DOM實(shí)例
????var?childrenComponent=[];
????
????//?子組件
????var?Child?=?React.CreateClass({
????????componentDidMount:?function?(){
????????????//?將組件最后的react實(shí)例保存下來(lái),方便在父組件中調(diào)用其屬性和方法。
? ????childrenComponent.push(this);
? },
????????render:function?(){
????????????return(
????????????????<p>this?is?a?child?component,number:{this.props.index}</p>
????????????)
????????}
????})
????
????//父組件
????var?Parent?=?React.CreateClass({
????????handleCilck:function?(){
????????????//這里拿到子組件的虛擬DOM,以進(jìn)行一些操作
????????????console.log(childrenComponent[0])
????????},
????????render:function?(){
????????????var?children?=?[];
????????????var?newChild?=?function?(i){
????????????????return?<Child?index={i}?/>?
????????????}?
????????????for(var?i=0,?i<5,?i++){
????????????????children.push(newChild(i))
????????????}
????????????return(
????????????????<div>
????????????????????{children}
????????????????????<button?onClick={this.handleClick}></button>
????????????????</div>
????????????)
????????}
????})
????
????React.render(
????<Parent?/>,
????document.body
);
React在父組件中如何拿到子組件的虛擬dom
云景前端
2016-01-24 01:03:02