您好,登錄后才能下訂單哦!
這篇文章主要介紹“vue中Render函數怎么使用”,在日常操作中,相信很多人在vue中Render函數怎么使用問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”vue中Render函數怎么使用”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!
首先是v-if 的轉化使用全局組件的v 值決定組件渲染的狀態,對實例中傳遞的props的“nnum”值得控制可以自如的切換兩種狀態顯示。這樣就是和v-if 一樣使用組件了
<div id="app"> <mycom :v="nnum"> <div slot="slot2">hahahhah</div> <div slot="slot1">ggggggggggggg</div> </mycom> </div> <script> Vue.component('mycom',{ render:function(createElement){ var s=this; if(this.v==1){ return createElement('div', { domProps:{innerHTML:'component n='+this.n} }) }else{ return createElement('div', [this.$slots.slot1,this.$slots.slot2]) } }, props:{ v:{ type:Number, default:0 }, n:{ default:'hello' } } }); var app=new Vue({ el:'#app', data:{ nnum:1 } })
v-for 的使用需要需要使用到map
<div id="app"> <mycom :v="nnum" :ar="arr"> <div slot="slot2">hahahhah</div> <div slot="slot1">ggggggggggggg</div> </mycom> </div> <script> Vue.component('mycom',{ render:function(createElement){ if(this.v==1){ return createElement('div', this.ar.map(function(item){ return createElement('li', { domProps:{ innerHTML:item } }) }) ) }else{ return createElement('div', [this.$slots.slot1,this.$slots.slot2]) } }, props:{ v:{ type:Number, default:0 }, n:{ default:'hello' }, ar:{ type:Array, default:function(){ return [1,23,4,5,6,55,65]} } } }); var app=new Vue({ el:'#app', data:{ nnum:1, arr:[1,2,3,4,5,6,7,8] } }) </script> </body>
只有map方法才能檢測改變,其他的方法不能根據數據的改變能改變相應的狀態下的例子中的arr數組 依靠 apply的方法來實現的就不能夠檢測this.ar 的變換來重新計算
return createElement('div', Array.apply(null,this.ar.map(function(item){ return createElement('li', { domProps:{ innerHTML:'item' } }) }))
<body> <div id="app"> <mycom :v="nnum" :ar="arr"> <div slot="slot2">hahahhah</div> <div slot="slot1">ggggggggggggg</div> </mycom> </div> <script> Vue.component('mycom',{ render:function(createElement){ if(this.v==1){ return createElement('div', this.ar.map(function(item){ return createElement('li', { domProps:{ innerHTML:item } }) }) ) }else{ return createElement('div', Array.apply(null,this.ar.map(function(item){ return createElement('li', { domProps:{ innerHTML:'item' } }) })) ) } }, props:{ v:{ type:Number, default:0 }, n:{ default:'hello' }, ar:{ type:Array, default:function(){ return [1,23,4,5,6,55,65]} } } }); var app=new Vue({ el:'#app', data:{ nnum:2, arr:[1,2,3,4,5,6,7,8] } }) </script> </body>
v-model 使用domProps來實現雙向綁定
使用對value:賦值可以將數據綁定給 input 的默認值,但是對input 的修改并不能傳遞給vue 這涉及到組件的通信問題,
所以想實現雙向綁定,只能自己寫事件來出發 vue shu'j的傳遞
domProps:{value:self.v }
<body> <div id="app"> <mycom :v="nnum" :ar="arr"> <div slot="slot2">hahahhah</div> <div slot="slot1">ggggggggggggg</div> </mycom> <div>{{nnum}}</div> </div> <script> Vue.component('mycom',{ render:function(createElement){ var self=this; var inp=createElement('input', { domProps:{ value:self.v } }); return createElement('div',[inp]) }, props:{ v:{ type:Number, default:0 }, n:{ default:'hello' }, ar:{ type:Array, default:function(){ return [1,23,4,5,6,55,65]} } } }); var app=new Vue({ el:'#app', data:{ nnum:100, arr:[1,2,3,4,5,6,7,8] } }) </script> </body>
通過input觸發undateValue來更新 app中的nnum 值(差點沒轉過彎來,render過于復雜后,真的是自己找罪受)
<div id="app"> <mycom :v="nnum" :ar="arr" @input="updateValue"> </mycom> <div>{{nnum}}</div> </div> <script> Vue.component('mycom',{ render:function(createElement){ var self=this; var inp=createElement('input', { domProps:{ value:self.v }, on:{ input:function(event){ self.$emit('input',event.target.value) } } }); return createElement('div',[inp]) }, props:{ v:{ type:Number, default:0 }, n:{ default:'hello' }, ar:{ type:Array, default:function(){ return [1,23,4,5,6,55,65]} } }, methods:{ update:function(){ } } }); var app=new Vue({ el:'#app', data:{ nnum:100, arr:[1,2,3,4,5,6,7,8] }, methods:{ updateValue:function(value){ this.nnum=parseFloat(value); } } }) </script> </body>
Vue是一款友好的、多用途且高性能的JavaScript框架,使用vue可以創建可維護性和可測試性更強的代碼庫,Vue允許可以將一個網頁分割成可復用的組件,每個組件都包含屬于自己的HTML、CSS、JavaScript,以用來渲染網頁中相應的地方,所以越來越多的前端開發者使用vue。
到此,關于“vue中Render函數怎么使用”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。