-
reaction的使用場景:在沒有數(shù)據(jù)之前,我們不想也沒有必要實(shí)現(xiàn)寫緩存的邏輯,可以使用reaction來實(shí)現(xiàn)在數(shù)據(jù)第一次被填充之后,來實(shí)現(xiàn)寫緩存的邏輯。
查看全部 -
reaction的參數(shù)為兩個(gè)函數(shù):
第一個(gè)函數(shù)引用可觀察數(shù)據(jù),并返回一個(gè)值,這個(gè)值會作為第二個(gè)函數(shù)的參數(shù)
在初始化的階段,第一個(gè)函數(shù)會被先執(zhí)行一次,這樣mobx就知道哪些可觀察數(shù)據(jù)被引用了,并在這些數(shù)據(jù)被修改后,執(zhí)行第二個(gè)函數(shù)。這樣不必先執(zhí)行一遍副作用,就可以建立副作用與可觀察數(shù)據(jù)之間的聯(lián)系。
查看全部 -
無論是否更改可觀察數(shù)據(jù),autorun都會先執(zhí)行一次,因?yàn)闆]有先行執(zhí)行的話,就不知道哪些可觀察數(shù)據(jù)被引用,就更做不到這些數(shù)據(jù)被修改時(shí),觸發(fā)autorun的邏輯了。
但是如果可以單獨(dú)告知mobx,我們引用了哪些可觀察數(shù)據(jù),這些副作用的邏輯,就不會先行執(zhí)行了。
使用reaction解決上述問題
查看全部 -
mobx...
查看全部 -
function(1)console.log(1)
查看全部 -
computed可以將多個(gè)可觀察數(shù)據(jù)組合成一個(gè)可觀察數(shù)據(jù)
autorun可以自動(dòng)追蹤其引用的可觀察數(shù)據(jù),并在數(shù)據(jù)改變的時(shí)候重新觸發(fā)
when提供了條件執(zhí)行邏輯,是autorun的一種變種
reaction只能通過分離可觀察數(shù)據(jù)聲明,以副作用的方式對autorun作出改進(jìn)
查看全部 -
when函數(shù)
第一個(gè)參數(shù)只能根據(jù)可觀察數(shù)據(jù)來計(jì)算布爾值,不能只根據(jù)普通變量;
第一個(gè)參數(shù)的函數(shù)一開始就返回真,那么第二個(gè)參數(shù)的函數(shù)就會立即執(zhí)行
查看全部 -
autorun
查看全部 -
computed作為裝飾器,computed值可以作為新的可觀察數(shù)據(jù)的
autorun執(zhí)行的條件是其引用的可觀察數(shù)據(jù)發(fā)生了變化
查看全部 -
computed作為普通函數(shù)檢測其他數(shù)據(jù)的變化
computed中傳入一個(gè)無參數(shù)的函數(shù),需要return
observe中傳入一個(gè)具有change參數(shù)的函數(shù),change就是foo中被檢測數(shù)據(jù)變化時(shí)候的新老值,這個(gè)值是obeservableValue,注意無論被檢測的哪個(gè)值變化的時(shí)候,都會觸發(fā)observe中的函數(shù)
查看全部 -
觀察數(shù)據(jù)變化的方式
查看全部 -
修飾器只能用來修飾類或者類成員,
被observable裝飾器修飾的都是可觀察對象
查看全部 -
observable可以對數(shù)組、對象、map類型的屬性進(jìn)行監(jiān)控,但是對number、字符串、布爾類型等原始類型的數(shù)據(jù)只能做到對引用的監(jiān)控,且需要使用observable.box
可以使用get方法返回被observable包裹的原始類型值
set方法會修改原始類型值
查看全部 -
監(jiān)視新增加的屬性,需要使用extendObservale,所以,需要監(jiān)視的屬性,一定要在初始化的時(shí)候都添加進(jìn)去
查看全部 -
observable包裹的數(shù)組,已經(jīng)不是數(shù)組了,但是可以使用數(shù)組的方法
盡量不要訪問越界的數(shù)組,比如數(shù)組只有兩個(gè)值,訪問了第三個(gè),就會報(bào)警告,越界的值不會被監(jiān)視
查看全部
舉報(bào)