<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
打標識:<h1 ref="xxx">.....</h1>
或 <School ref="xxx"></School>
獲取:this.$refs.xxx
如果我們需要子元件收到父元件傳來的資料,就可以使用props
設定項。
<Student name="李四" sex="女" :age="18"/>
在App
通過標籤屬性為Student
傳遞資料,需要在Student
中接收傳遞來的資料,有三種接收方式。
第一種方式(只接收):
props:[‘name',‘age',‘sex']
第二種方式(限制型別):
props: { name: String, age: Number, sex: String }
第三種方式(限制型別、限制必要性、指定預設值):
props: { name: { type: String, //name的型別是字串 required: true, //name是必要的 }, age: { type: Number, default: 99 //預設值 }, sex: { type: String, required: true } }
必要性與預設值只設定一個即可。
<!--Student--> <template> <div> <h1>{{ msg }}</h1> <h2>學生姓名:{{ name }}</h2> <h2>學生性別:{{ sex }}</h2> <h2>學生年齡:{{ myAge }}</h2> <button @click="updateAge">嘗試修改收到的年齡</button> </div> </template> <!--App--> <template> <div> <Student name="張三" sex="男"/> <Student name="李四" sex="女" :age="18"/> </div> </template>
<Demo name="xxx"/>
第一種方式(只接收):props:['name']
第二種方式(限制型別):props:{name:String}
第三種方式(限制型別、限制必要性、指定預設值):
props:{ name:{ type:String, //型別 required:true, //必要性 default:'老王' //預設值 } }
備註:props是唯讀的,Vue底層會監測你對props的修改,如果進行了修改,就會發出警告,若業務需求確實需要修改,那麼請複製props的內容到data中一份,然後去修改data中的資料。
混入用於抽離出多個元件的公共部分,包括函數和資料。在使用時候引入,能有效提高程式碼的複用性,混入本質上是一個物件。
混入的使用有兩種:
我們定義混入,封裝一個方法,以及攜帶一些資料。
定義一個mixin.js檔案,編寫混入以及提供外部參照的介面,即暴露。
export const hunhe = { methods: { showName(){ alert(this.name) } }, mounted() { console.log('你好啊!') }, } export const hunhe2 = { data() { return { x:100, y:200 } }, }
接下來在School
與Student
中引入混入
import {hunhe,hunhe2} from '../mixin' mixins:[hunhe,hunhe2],
全域性混入在main.js中設定
import {hunhe,hunhe2} from './mixin' Vue.mixin(hunhe) Vue.mixin(hunhe2)
第一步定義混合:
{ data(){....}, methods:{....} .... }
第二步使用混入:
全域性混入:Vue.mixin(xxx)
區域性混入:mixins:['xxx']
外掛的應用與混入的應用差不多。
首先建立一個js檔案,在裡面建立外掛,外掛本質上也是一個物件。外掛中要編寫install
函數,函數的第一個引數是Vue物件,也可以繼續傳遞引數。
export default { install(Vue, x, y, z) { console.log(x, y, z) //全域性過濾器 Vue.filter('mySlice', function (value) { return value.slice(0, 4) }) //定義全域性指令 Vue.directive('fbind', { //指令與元素成功繫結時(一上來) bind(element, binding) { element.value = binding.value }, //指令所在元素被插入頁面時 inserted(element, binding) { element.focus() }, //指令所在的模板被重新解析時 update(element, binding) { element.value = binding.value } }) //定義混入 Vue.mixin({ data() { return { x: 100, y: 200 } }, }) //給Vue原型上新增一個方法(vm和vc就都能用了) Vue.prototype.hello = () => { alert('你好啊') } } }
接著引入並使用外掛即可,依然是在main.js裡,這樣就能全域性的使用外掛了。
//引入外掛 import plugins from './plugins' //應用(使用)外掛 第一個引數名字與外掛的名字一致 Vue.use(plugins,1,2,3)
物件.install = function (Vue, options) { // 1. 新增全域性過濾器 Vue.filter(....) // 2. 新增全域性指令 Vue.directive(....) // 3. 設定全域性混入(合) Vue.mixin(....) // 4. 新增實體方法 Vue.prototype.$myMethod = function () {...} Vue.prototype.$myProperty = xxxx }
使用外掛:Vue.use()
到此這篇關於Vue元件化(ref, props, mixin, 外掛)詳解的文章就介紹到這了,更多相關vue元件化內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45