官术网_书友最值得收藏!

2.4.2 history導(dǎo)航

1.history.push

與browserHistory一樣,其簽名為:

對于memoryHistory,其location存儲(chǔ)在內(nèi)存中,在調(diào)用history.push后,得到的location既可通過memoryHistory.location獲取,也可通過訪問歷史棧獲取:

與browserHistory、hashHistory一樣,memoryHistory不僅支持調(diào)用block阻止跳轉(zhuǎn),還支持相對路徑導(dǎo)航、保存state等:

注意,在memoryHistory導(dǎo)航過程中,所有信息都將保存到location中,不像browserHistory的key與state一樣存在于window.history.state中進(jìn)行持久化存儲(chǔ),memoryHistory導(dǎo)航過程中所有的key與state均存儲(chǔ)在自身維護(hù)的內(nèi)存中。

對于history.push的實(shí)現(xiàn),其模擬了瀏覽器管理歷史記錄的方法:

2.history.replace

history.replace可替換歷史棧內(nèi)容,與browserHistory、hashHistory等均一致,其簽名如下:

history.replace不增加棧記錄:

對于history.replace,其內(nèi)部實(shí)現(xiàn)非常簡單,使用新的location替換歷史棧中對應(yīng)位置的歷史記錄即可:

3.history.go

memoryHistory的go方法與browserHistory、hashHistory的go方法一樣,都是移動(dòng)棧指針,不改變棧的內(nèi)容;但其在實(shí)現(xiàn)上與這兩者不同的是,browserHistory和hashHistory歷史棧的棧指針由瀏覽器管理,而memoryHistory沒有history.go方法可供調(diào)用以移動(dòng)棧指針,所以memoryHistory自行維護(hù)棧指針,即便調(diào)用history.go方法也應(yīng)自行控制棧指針。

history.go方法對跳轉(zhuǎn)距離n做了鉗位控制:

n被限制在0與history.entries.length-1之間。

主站蜘蛛池模板: 保山市| 凌云县| 彭阳县| 涡阳县| 襄樊市| 邓州市| 南召县| 忻州市| 道真| 富顺县| 浦北县| 黄石市| 屏南县| 交城县| 皋兰县| 福清市| 阳曲县| 托里县| 确山县| 集安市| 昂仁县| 思茅市| 桐庐县| 益阳市| 尼玛县| 苗栗县| 屯留县| 阿拉善盟| 固原市| 图木舒克市| 百色市| 来安县| 城口县| 锡林浩特市| 南川市| 横山县| 区。| 宁强县| 谢通门县| 富平县| 新安县|