十分鐘帶你理解Mobx

2021-10-05 02:52:47 字數 2097 閱讀 4487

******, scalable state management 簡單,可擴充套件的狀態管理器

npm install -s mobx mobx-react
用法:

const map = observable.map()

map.set("key", "new value")

const list = observable([1, 2, 4])

list[2] = 3

const person = observable()

person.firstname = "c.s."

const temperature = observable.box(20)

temperature.set(25)

用法:

import react from "react";

import from "mobx-react";

import from "mobx";

// create observer

// create action

const addtimer = action(() => )

const resettimer = action(() => )

return (

add+1

resettimer

);});

類案例,

class ticker 

}const ticker = new ticker()

setinterval(ticker.increment, 1000)

computed 計算值

autorun 響應式函式

when 自定義響應

reaction 更顆粒度的autorun

class mobxclass extends  react.component

render()

amount:

price*amount:)}}

export default mobxclass

選項

autorun 接收第二個引數,它是乙個引數物件,有如下可選的引數:

autorun(() => , ,

});

class myresource 

@computed get isvisible()

dispose()

}

autorun 的變種,對於如何追蹤 observable 賦予了更細粒度的控制。

用法: reaction(() => data, (data, reaction) => , options?)。

選項reaction 接收第三個引數,它是乙個引數物件,有如下可選的引數:

粗略地講,reaction 是 computed(expression).observe(action(sideeffect)) 或 autorun(() => action(sideeffect)(expression)) 的語法糖。

const counter = observable();

// 只呼叫一次並清理掉 reaction : 對 observable 值作出反應。

const reaction3 = reaction(

() => counter.count,

(count, reaction) =>

);counter.count = 1;

// 輸出:

// reaction 3: invoked. counter.count = 1

counter.count = 2;

// 輸出:

// (there are no logging, because of reaction disposed. but, counter continue reaction)

console.log(counter.count);

// 輸出:

// 2

課間十分鐘

時間限制 1000 ms 記憶體限制 128 mb 兩人都是數學愛好者,便發明了乙個遊戲。在遊戲開始前,他們先約定乙個正整數n,同時令m 1。遊戲過程中,每個人都可以將m的值擴大2到9中的任意倍數。第乙個使m n的人就是最後的贏家。181818181818和zbt都十分聰明,並且遊戲過程中都使用最佳...

十分鐘的代價

2008年9月15日上午10 00,擁有158年歷史的美國第四大投資銀行 雷曼兄弟公司向法院申請破產保護,訊息轉瞬間通過電視 廣播和網路傳遍地球的各個角落。令人匪夷所思的是,在如此重大的情況下,德國國家發展銀行在十分鐘後,居然按照外匯掉期協議的交易,通過計算機自動付款系統,向雷曼兄弟公司即將凍結的銀...

十分鐘的悲劇

2008年9 月15日上午 10 00 擁有158 年歷史的美國第四大投資銀行 雷曼兄弟公司向法院申請破產保護,訊息轉瞬間通過電視 廣播和網路傳遍地球的各個角落。令人匪夷所思的是,在如此明朗的情況下,德國國家發展銀行 10 10 居然按照外匯掉期協議的交易,通過計算機自動付款系統,向雷曼兄弟公司即將...