vue中通過render函數給子組件設置ref


正常我們的寫法是,這樣ref不會生效,h是作用在渲染的時候的,而ref是渲染之后才創建的,因此在h函數中使用ref是無效的。

render: (h, params) => {
				        	
	return h(expandRow, {
	    ref:'child',
	    props: {
	        row: params.row
	    }
				
		})    
}
			

我們常見h函數的用法是:

render: (h) => {
    return h(ele)
}

=> 是es6的用法,相當於 (h) => {}  相當於 function(){},上面的代碼可解析為:

render: function(createElement) {
    return createElement(ele);
}

Vue在創建Vue實例時,通過render作為函數來渲染Dom樹,而在render方法中,又調用createElement函數來渲染子組件或元素。因此此時元素或子組件處於渲染過程。ref是用來給元素或子組件注冊引用信息的,引用信息將會注冊在父組件的$refs對象上。因為 ref 本身是作為渲染結果被創建的,在初始渲染的時候你不能訪問它們 - 它們還不存在!

解決辦法

把h改為創建 this.$createElement

render: (h, params) => {
				        	
	return this.$createElement(expandRow, {
	    ref:'child',
	    props: {
	        row: params.row
	    }
				
		})    
}
				

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM