******, 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 居然按照外匯掉期協議的交易,通過計算機自動付款系統,向雷曼兄弟公司即將...