国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

ts:簡(jiǎn)單實(shí)現(xiàn) mobx 的觀察者模式 observable

這篇具有很好參考價(jià)值的文章主要介紹了ts:簡(jiǎn)單實(shí)現(xiàn) mobx 的觀察者模式 observable。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

mobx 狀態(tài)管理器文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-517861.html

  • 訂閱者:管理 變化后 回調(diào)的函數(shù)列表
  • 觀察者:將傳入的數(shù)據(jù)監(jiān)聽(tīng)起來(lái),并且在有變化時(shí)執(zhí)行訂閱者管理的函數(shù)列表
// 訂閱者的函數(shù)列表,set結(jié)構(gòu),內(nèi)部是 function
const list: Set<Function> = new Set()
// 訂閱者,管理函數(shù)列表
const autoRun = (fn: Function) => {
  if (!list.has(fn)) {
    list.add(fn)
  }
}

// 觀察者
const observable = <T extends object> (params: T) => {
  return new Proxy(params, {
    set (target, key, value, receiver) {
      const result = Reflect.set(target, key, value, receiver)
  
      // 可以自定義一些內(nèi)容
      // 這里需要執(zhí)行訂閱者的回調(diào)函數(shù),即 list 中所有函數(shù)
      list.forEach(fn => fn())
  
      return result
    }
  })
}

// 通過(guò)觀察者創(chuàng)建數(shù)據(jù)
const proxyObservable = observable({
  name: '笑笑',
  attr: '真好看哈哈哈'
})
console.log('-----', proxyObservable.attr)

// 訂閱者中新增一個(gè)函數(shù)
autoRun(() => {
  console.log('有變化了哈哈哈')
})

// 更新數(shù)據(jù)
proxyObservable.attr = '今天又好看了一點(diǎn)' // 有變化了哈哈哈
proxyObservable.name = 'blue' // 有變化了哈哈哈

到了這里,關(guān)于ts:簡(jiǎn)單實(shí)現(xiàn) mobx 的觀察者模式 observable的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • Go和Java實(shí)現(xiàn)觀察者模式

    在監(jiān)控系統(tǒng)中,我們需要采集監(jiān)控指標(biāo)的信息,假設(shè)當(dāng)采集的指標(biāo)信息超過(guò)閾值時(shí)我們需要對(duì)該監(jiān)控指標(biāo)持久化到 數(shù)據(jù)庫(kù)中并且進(jìn)行告警。 本文通過(guò)指標(biāo)采集持久化和告警來(lái)說(shuō)明觀察者模式的使用,使用Go語(yǔ)言和Java語(yǔ)言實(shí)現(xiàn)。 觀察者模式是一種行為型設(shè)計(jì)模式,它定義了一

    2024年02月16日
    瀏覽(18)
  • 如何用C++11實(shí)現(xiàn)觀察者模式

    觀察者模式是一種設(shè)計(jì)模式,定義了對(duì)象之間的一對(duì)多關(guān)系。當(dāng)一個(gè)對(duì)象狀態(tài)發(fā)生改變時(shí),它的依賴者都會(huì)收到通知并自動(dòng)更新。在C++11中,可以通過(guò)以下方式實(shí)現(xiàn)觀察者模式: 首先,我們需要?jiǎng)?chuàng)建一個(gè)觀察者接口,其中包含一個(gè)更新方法。這個(gè)接口可以被多個(gè)觀察者類實(shí)現(xiàn)

    2024年02月15日
    瀏覽(33)
  • 「觀察者(Observer)」設(shè)計(jì)模式 Swift實(shí)現(xiàn)

    「觀察者(Observer)」設(shè)計(jì)模式 Swift實(shí)現(xiàn)

    觀察者設(shè)計(jì)模式(Observer Pattern)是一種行為型設(shè)計(jì)模式,它定義了對(duì)象之間的一種一對(duì)多的依賴關(guān)系,使得當(dāng)一個(gè)對(duì)象的狀態(tài)發(fā)生變化時(shí),所有依賴于它的對(duì)象都會(huì)受到通知并自動(dòng)更新。 在這種模式中,被觀察者對(duì)象(Subject)存儲(chǔ)其觀察者對(duì)象(Observer)列表,并提供了用

    2024年02月16日
    瀏覽(25)
  • 【設(shè)計(jì)模式】Head First 設(shè)計(jì)模式——觀察者模式 C++實(shí)現(xiàn)

    設(shè)計(jì)模式最大的作用就是在變化和穩(wěn)定中間尋找隔離點(diǎn),然后分離它們,從而管理變化。將變化像小兔子一樣關(guān)到籠子里,讓它在籠子里隨便跳,而不至于跳出來(lái)把你整個(gè)房間給污染掉。 主題對(duì)象(出版者)管理某些數(shù)據(jù),當(dāng)主題內(nèi)的數(shù)據(jù)改變,就會(huì)通知觀察者(訂閱者)。

    2024年02月10日
    瀏覽(27)
  • 觀察者模式(下):如何實(shí)現(xiàn)一個(gè)異步非阻塞的EventBus框架?

    觀察者模式(下):如何實(shí)現(xiàn)一個(gè)異步非阻塞的EventBus框架?

    上一節(jié)課中,我們學(xué)習(xí)了觀察者模式的原理、實(shí)現(xiàn)、應(yīng)用場(chǎng)景,重點(diǎn)介紹了不同應(yīng)用場(chǎng)景下,幾種不同的實(shí)現(xiàn)方式,包括:同步阻塞、異步非阻塞、進(jìn)程內(nèi)、進(jìn)程間的實(shí)現(xiàn)方式。 同步阻塞是最經(jīng)典的實(shí)現(xiàn)方式,主要是為了代碼解耦;異步非阻塞除了能實(shí)現(xiàn)代碼解耦之外,還能

    2024年02月16日
    瀏覽(23)
  • 性能優(yōu)化之懶加載 - 基于觀察者模式和單例模式的實(shí)現(xiàn)

    性能優(yōu)化之懶加載 - 基于觀察者模式和單例模式的實(shí)現(xiàn)

    ? ? ? ? 在前端性能優(yōu)化中,關(guān)于圖片/視頻等內(nèi)容的懶加載一直都是優(yōu)化利器。當(dāng)用戶看到對(duì)應(yīng)的視圖模塊時(shí),才去請(qǐng)求加載對(duì)應(yīng)的圖像。 原理也很簡(jiǎn)單,通過(guò)瀏覽器提供的?IntersectionObserver - Web API 接口參考 | MDN (mozilla.org),觀察“哪個(gè)元素和視口交叉”,從而進(jìn)行懶加載。

    2024年02月05日
    瀏覽(25)
  • 用C++11打造智能觀察者模式:詳解實(shí)現(xiàn)步驟完整示例代碼

    用C++11打造智能觀察者模式:詳解實(shí)現(xiàn)步驟完整示例代碼

    ? 觀察者模式是一種行為設(shè)計(jì)模式,其中一個(gè)對(duì)象(主題)維護(hù)其依賴對(duì)象(觀察者)的列表,當(dāng)主題的狀態(tài)發(fā)生變化時(shí),它通知所有觀察者。以下是一個(gè)使用C++11實(shí)現(xiàn)觀察者模式的簡(jiǎn)單例子: 定義觀察者接口(Observer): ?創(chuàng)建一個(gè)觀察者接口,該接口包含觀察者需要實(shí)現(xiàn)

    2024年01月25日
    瀏覽(25)
  • 【C++ 觀察者模式 思想理解】C++中的觀察者模式:松耦合設(shè)計(jì)與動(dòng)態(tài)交互的藝術(shù),合理使用智能指針觀察者

    【C++ 觀察者模式 思想理解】C++中的觀察者模式:松耦合設(shè)計(jì)與動(dòng)態(tài)交互的藝術(shù),合理使用智能指針觀察者

    在進(jìn)入技術(shù)細(xì)節(jié)之前,理解觀察者模式(Observer Pattern)的基本概念和它在現(xiàn)代編程中的重要性是至關(guān)重要的。 觀察者模式是一種設(shè)計(jì)模式,它定義了對(duì)象間的一種一對(duì)多的依賴關(guān)系,當(dāng)一個(gè)對(duì)象的狀態(tài)發(fā)生改變時(shí),所有依賴于它的對(duì)象都得到通知并自動(dòng)更新。在C++中,這個(gè)

    2024年01月24日
    瀏覽(48)
  • 設(shè)計(jì)模式——觀察者模式

    設(shè)計(jì)模式——觀察者模式

    觀察者模式可以分為觀察者和被觀察者,觀察者通過(guò)注冊(cè)到一個(gè)被觀察者中,也可視為訂閱,當(dāng)被觀察者的數(shù)據(jù)發(fā)生改變時(shí),會(huì)通知到觀察者,觀察者可以據(jù)此做出反應(yīng)。 可以類比訂閱報(bào)紙,報(bào)社就是被觀察者,訂閱者就是觀察者,訂閱者通過(guò)訂閱報(bào)紙與報(bào)社建立聯(lián)系,而報(bào)

    2024年02月15日
    瀏覽(18)
  • 【設(shè)計(jì)模式】觀察者模式

    【設(shè)計(jì)模式】觀察者模式

    觀察者模式(又被稱為發(fā)布-訂閱(Publish/Subscribe)模式,屬于行為型模式的一種,它定義了一種一對(duì)多的依賴關(guān)系,讓多個(gè)觀察者對(duì)象同時(shí)監(jiān)聽(tīng)某一個(gè)主題對(duì)象。這個(gè)主題對(duì)象在狀態(tài)變化時(shí),會(huì)通知所有的觀察者對(duì)象,使他們能夠自動(dòng)更新自己。 Subject:抽象主題(被觀察者

    2024年02月13日
    瀏覽(20)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包