vue中provide?inject的響應式監(jiān)聽解決方案
provide inject的響應式監(jiān)聽解決
提示:provide 和 inject 綁定并不是可響應的。這是刻意為之的。然而,如果你傳入了一個可監(jiān)聽的對象,那么其對象的屬性還是可響應的。
所以傳值傳對象即可
provide(){ ? ? return { ? ? ? provObj: { ? ? ? ? uuidList:{} ? ? ? } ? ? } ? },
- this._provided.provObj.uuidList = res(異步得到的數(shù)據(jù))
- inject那邊正常獲取
vue監(jiān)聽賦值及provide與inject
vue 當父組件 改變 子組件的props 卻不變
? watch: { ? ? 'oState': function (val,oldval) { ? ? ? this.getOrderList({orderStatus: this.getOrderState(this.oState), pageSize: 1}) ? ? }, ? // 深度 watcher ? ? ? c: { ? ? ? ? handler: function (val, oldVal) { /* ... */ }, ? ? ? ? deep: true ? ? ? }, ? },
$refs
? <ul class="comment-list" v-if="list" ref="commentList"></ul> ? scrollToTop () { ? ? this.$refs.commentList.scrollTop = 0 ? }
$el
? this.$refs.studentListDialog.$el.querySelector('.el-dialog') ? vm.$once( event, callback )
參數(shù):
{string} event
{Function} callback
用法:
監(jiān)聽一個自定義事件,但是只觸發(fā)一次,在第一次觸發(fā)之后移除監(jiān)聽器。
vm.$off( [event, callback] )
參數(shù):
- {string | Array<string>} event (只在 2.2.2+ 支持數(shù)組)
- {Function} [callback]
用法:
- 移除自定義事件監(jiān)聽器。
- 如果沒有提供參數(shù),則移除所有的事件監(jiān)聽器;
- 如果只提供了事件,則移除該事件所有的監(jiān)聽器;
- 如果同時提供了事件與回調(diào),則只移除這個回調(diào)的監(jiān)聽器。
vm.$destroy()
用法:
完全銷毀一個實例。清理它與其它實例的連接,解綁它的全部指令及事件監(jiān)聽器。
觸發(fā) beforeDestroy 和 destroyed 的鉤子。
當生成vue實例后,當再次給數(shù)據(jù)賦值時,有時候并不會自動更新到視圖上去
? obj:{ ? ?? ?arr:[] ? }
雙向綁定后無法直接改變obj.arr
需要新增一個arr賦值或者
? this.$set(this.ruleForm, 'date', time) ? vue.set(target,key,value)
參數(shù):
{object | Array} target
{string | number} key
{any} value
this.$set()和Vue.set()本質(zhì)方法一樣,前者可以用在methods中使用。
set方法調(diào)用時,可以觸發(fā)頁面全部重新渲染。
provide:Object | () => Objectinject:Array<string> | { [key: string]: string | Symbol | Object }
這對選項需要一起使用,以允許一個祖先組件向其所有子孫后代注入一個依賴,不論組件層次有多深,并在起上下游關系成立的時間里始終生效。如果你熟悉 React,這與 React 的上下文特性很相似。
provide 選項應該是一個對象或返回一個對象的函數(shù)。該對象包含可注入其子孫的屬性。在該對象中你可以使用 ES2015 Symbols 作為 key,但是只在原生支持 Symbol 和 Reflect.ownKeys 的環(huán)境下可工作。
inject 選項應該是:
一個字符串數(shù)組,或一個對象,對象的 key 是本地的綁定名,value 是:
在可用的注入內(nèi)容中搜索用的 key (字符串或 Symbol),或一個對象,該對象的:
from
屬性是在可用的注入內(nèi)容中搜索用的 key (字符串或 Symbol)default
屬性是降級情況下使用的 value
提示:provide 和 inject 綁定并不是可響應的。這是刻意為之的。然而,如果你傳入了一個可監(jiān)聽的對象,那么其對象的屬性還是可響應的。
示例:
// 父級組件提供 ‘foo' ? var Provider = { ? ? provide: { ? ? ? foo: 'bar' ? ? }, ? ? // ... ? } // 子組件注入 'foo' ? var Child = { ? ? inject: ['foo'], ? ? created () { ? ? ? console.log(this.foo) // => "bar" ? ? } ? ? // ... ? }
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
vue使用el-table 添加行手動填寫數(shù)據(jù)和刪除行及提交保存功能
遇到這樣的需求點擊新增按鈕實現(xiàn)下列彈窗的效果,點擊添加行新增一行,點擊刪除進行刪除行,點擊提交將數(shù)據(jù)傳遞到后端進行保存,怎么實現(xiàn)的呢,下面通過實例代碼給大家詳細講解,感興趣的朋友一起看看吧2023-12-12使用vuex解決刷新頁面state數(shù)據(jù)消失的問題記錄
這篇文章主要介紹了使用vuex解決刷新頁面state數(shù)據(jù)消失的問題記錄,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2019-05-05Vue常見錯誤Error?in?mounted?hook解決辦法
這篇文章主要給大家介紹了關于Vue常見錯誤Error?in?mounted?hook的解決辦法,出現(xiàn)這樣的問題,會發(fā)現(xiàn)跟聲明周期鉤子有關系,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考下2023-07-07