總體思路
使用localStorage保存一個標記變量‘pageCount’案怯,在打開新標簽頁后給該值+1荠瘪,關閉標簽頁時-1段化。點擊打開新標簽頁時茵休,判斷該值是否為0薪棒,是則同意跳轉(zhuǎn)。
分解動作
- 跳轉(zhuǎn)判斷
function handleJumpToModelManager(labelId){
if(localStorage.count!=0||!localStorage.count){
window.open(`${publicPath}#/modelmanager`,'_blank');
localStorage.setItem(‘pageCount’,1);
}else{
alert('請勿重復打開頁面榕莺!');
}
}
- 關閉新標簽頁時設置pageCount-1
在不同階段處理問題時我們總會想到生命周期俐芯,在React類組件中,組件卸載前可以使用componentWillUnmount() 钉鸯,該會在組件卸載及銷毀之前直接調(diào)用吧史。在此方法中執(zhí)行必要的清理操作,例如唠雕,清除 timer贸营,取消網(wǎng)絡請求或清除在 componentDidMount() 中創(chuàng)建的訂閱等。
但是岩睁,關閉標簽頁這個行為不會觸發(fā)組件的生命周期钞脂,而是會直接消失。
這時候就要用到瀏覽器事件beforeunload
當瀏覽器窗口關閉或者刷新時捕儒,會觸發(fā) beforeunload 事件冰啃。當前頁面不會直接關閉,可以點擊確定按鈕關閉或刷新刘莹,也可以取消關閉或刷新阎毅。
所以,我們在組件加載時添加該事件:
window.onbeforeunload = () =>{
localStorage.setItem(‘pageCount’,localStorage.pageCount+1);
}
如有不妥煩請指教点弯!