www.tjgcgs88.cn-狠狠久久亚洲欧美专区不卡,久久精品国产99久久无毒不卡,噼里啪啦国语版在线观看,zσzσzσ女人极品另类

  • <strike id="qgi8o"><td id="qgi8o"></td></strike>
  • <ul id="qgi8o"><acronym id="qgi8o"></acronym></ul>
  • <li id="qgi8o"></li>
    <ul id="qgi8o"></ul>
    <strike id="qgi8o"><rt id="qgi8o"></rt></strike>
    <ul id="qgi8o"><center id="qgi8o"></center></ul>
  • <kbd id="qgi8o"></kbd>

    qiankun上線穩(wěn)定,問(wèn)題解決匯總

    接入qiankun,項(xiàng)目上線也有段時(shí)間了,記錄一下遇到的問(wèn)題。

    1.子應(yīng)用更新路由,父應(yīng)用菜單高亮不匹配問(wèn)題

    子應(yīng)用history.push之后,父應(yīng)用的菜單還停留在之前的菜單高亮,但是頁(yè)面內(nèi)容又是新的路由內(nèi)容,url也是新的。導(dǎo)致菜單高亮不正確。

    解決辦法:

    import{useEffect}from'react';import{history}from'umi';//處理子應(yīng)用push操作,父應(yīng)用的菜單高亮不正確BUGexportfunctionuseBrowserHistory(){useEffect(()=>{consthandlePopState=(event:any)=>{const{href}=event.target.location;//eg:http://localhost:1200/#/bps/producMange/imageAlbum?a=bconstpathNameWithSearch=href.split('#')[1];//eg:/bps/producMange/imageAlbum?a=bconstpathname=pathNameWithSearch.split('?')[0];console.group('---handlePopState---');console.log('history.pathname-->',history.location.pathname);console.log('event=>pathname-->',pathname);console.log('event=>pathNameWithSearch-->',pathNameWithSearch);console.groupEnd();//如果2個(gè)不一樣,說(shuō)明是子應(yīng)用自己push的路由if(history.location.pathname!==pathname){history.replace(pathNameWithSearch);}};window.addEventListener('popstate',handlePopState);return()=>{window.removeEventListener('popstate',handlePopState);};},[]);}

    2.子應(yīng)用頁(yè)面級(jí)路由攔截在接入乾坤后不生效,如何處理。

    子應(yīng)用要實(shí)現(xiàn)的是表單頁(yè)面離開(kāi)前如果有修改表單要詢問(wèn)是否確定要離開(kāi),子應(yīng)用是vue2應(yīng)用,使用routeBeforeLeave可以容易實(shí)現(xiàn),獨(dú)立運(yùn)行時(shí)沒(méi)有問(wèn)題。

    現(xiàn)在接入我們平臺(tái)后,菜單是屬于父應(yīng)用的內(nèi)容,點(diǎn)擊后已經(jīng)去了新的路由,新的頁(yè)面,那個(gè)routeBeforeLeave雖然會(huì)觸發(fā),但是提示彈窗不出現(xiàn),交互效果也不對(duì)。

    1現(xiàn)在改造父應(yīng)用的菜單,聲明式改為命令式

    <Menu.Itemkey={item.id}>-<Linkto={item.path}>{item.name}</Link>+<divonClick={()=>handleClickRoute(item.path)}>{item.name}</div></Menu.Item>

    2自己處理點(diǎn)擊的邏輯

    //NEED_HISTORY_BLOCK_ROUTE配置的是需要攔截的urlconsthandleClickRoute=async(path:string)=>{console.log(needHistoryBlock,path,location.pathname);constisNeedBlockRoute=NEED_HISTORY_BLOCK_ROUTE.includes(location.pathname,);if(isNeedBlockRoute){actions.setGlobalState({routeChange:true,});//延遲500ms,等待子應(yīng)用通信過(guò)來(lái),數(shù)據(jù)有沒(méi)有改變,是否需要攔截路由awaitdelay(500);if(needHistoryBlock){Modal.confirm({title:'提示',content:'修改的信息沒(méi)有保存,現(xiàn)在離開(kāi),設(shè)置不會(huì)保存',okText:'確認(rèn)',cancelText:'取消',onOk:()=>{actions.setGlobalState({needHistoryBlock:false,routeChange:false,});setNeedHistoryBlock(false);history.push(path);},onCancel:()=>{},});}else{history.push(path);}}else{history.push(path);}};

    父應(yīng)用在點(diǎn)擊菜單時(shí)先把routeChange改為true,然后子應(yīng)用監(jiān)聽(tīng),如果表單有更改,則通信告訴我設(shè)置needHistoryBlock為true,如果沒(méi)有更改則啥都不用處理。

    父應(yīng)用監(jiān)聽(tīng)狀態(tài)變化,如果needHistoryBlock為true,則設(shè)置值,設(shè)置到全局變量里面。

    if(state.needHistoryBlock){setNeedHistoryBlock(true);return;}

    handleClickRoute里面會(huì)延遲100ms去監(jiān)聽(tīng)這個(gè)值needHistoryBlock,如果為true則給出彈窗,如果【確認(rèn)】要離開(kāi)則先把2個(gè)狀態(tài)設(shè)置為false,然后history.push`。如果【取消】什么都不用做。

    如果覺(jué)得這樣寫(xiě)不好,父應(yīng)用不應(yīng)該處理子應(yīng)用的邏輯,那就在子應(yīng)用聽(tīng)到消息后,自己彈出彈窗,然后在用戶點(diǎn)擊【確定】或【取消】后,自己執(zhí)行邏輯,然后通信給父應(yīng)用要不要去新的路由。也是可以的。【我們因?yàn)槟壳爸挥羞@個(gè)頁(yè)面需要這個(gè)操作,就先這樣簡(jiǎn)單處理了,嘻嘻~~】

    3.同域名下多環(huán)境登錄問(wèn)題

    核心思想是在WebStorage存儲(chǔ)時(shí),把key增加環(huán)境信息。詳細(xì)代碼如下(下面代碼因?yàn)槎鄠€(gè)視角都要改成父應(yīng)用,所以還有額外的多平臺(tái)配置):

    文件路徑:.src/utils/BapStore.ts

    /**WebStorage類型*/enumStoreType{'local','session',}/**視角前綴*/enumPrefix{'platform'='bspPlatform','tenant'='bspTenant','user'='bspUser',}/***命名空間:平臺(tái)視角:父應(yīng)用為`bspPlatform$`,子應(yīng)用為`bspPlatform-${name}`*命名空間:租戶視角:父應(yīng)用為`bspTenant$`,子應(yīng)用為`bspTenant-${name}`*命名空間:用戶視角:父應(yīng)用為`bspUser$`,子應(yīng)用為`bspUser-${name}`*前綴為`命名空間_環(huán)境_key`,*不考慮過(guò)期時(shí)間(因?yàn)橛貌坏剑绻唐谶^(guò)期請(qǐng)使用sessionStorage實(shí)例*#開(kāi)頭的屬性表示私有屬性,隱藏內(nèi)部實(shí)現(xiàn)且不暴露給外界*/classBapStore{/**命名空間,一般取項(xiàng)目的英文簡(jiǎn)寫(xiě),通常從package.json中取*/#namespace:string;/**當(dāng)前環(huán)境,目前有l(wèi)ocal,dev,test,pre,pro5種*/#env:string;/**實(shí)際用的Storage*/#store:Storage;#prefix:string;constructor(namespace:string,env:string,type:StoreType){this.#namespace=namespace;this.#env=env;this.#store=type===StoreType.local?window.localStorage:window.sessionStorage;this.#prefix=`${this.#namespace}_${this.#env}_`;}set(key:string,val:any){constk=`${this.#prefix}${key}`;if(val===undefined||val===null){this.#store.removeItem(k);}else{constv=JSON.stringify(val);this.#store.setItem(k,v);}}get(key:string){constk=`${this.#prefix}${key}`;constv=this.#store.getItem(k);if(v===null){returnnull;}else{returnJSON.parse(v);}}has(key:string){constk=`${this.#prefix}${key}`;constv=this.#store.getItem(k);returnv!==null;}remove(key:string){constk=`${this.#prefix}${key}`;constv=this.#store.getItem(k);if(v===null){console.warn(`不存在key為${key}的存儲(chǔ)項(xiàng)`);}else{this.#store.removeItem(k);}}/**僅清空自己前綴的key*/clear(){//注意這里不能邊刪邊查,會(huì)導(dǎo)致BUG;要一次性查出來(lái),然后刪除/**包含我的前綴的數(shù)組*/constmyStoreArr=Array.from({length:this.#store.length},(_,i)=>this.#store.key(i)asstring,).filter((str)=>str?.startsWith(this.#prefix));myStoreArr.forEach((str)=>this.#store.removeItem(str));}}/**父應(yīng)用類似`bspPlatform$`,子應(yīng)用類似`bspPlatform-${name}`*/constnamespace=`${Prefix.tenant}$`;exportconstlocalStore=newBapStore(namespace,REACT_APP_ENV,StoreType.local,);exportconstsessionStore=newBapStore(namespace,REACT_APP_ENV,StoreType.session,);

    4.css樣式污染,見(jiàn)另外一篇文章

    umi插件解決難題

    5.播放器不可用,同上見(jiàn)另外一篇文章

    umi插件解決難題

    6.切換應(yīng)用時(shí),前一個(gè)應(yīng)用的message彈窗一直存在,永不消失

    切換應(yīng)用時(shí),前一個(gè)應(yīng)用的彈窗應(yīng)當(dāng)全部銷毀。unmount做處理。

    exportasyncfunctionunmount(){console.log(`%c[${name}unmount函數(shù)]:`,'color:green;')//...其他正常邏輯+//子應(yīng)用unmount時(shí)要message.destroy()等+message.destroy()+notification.destroy()}

    7.子應(yīng)用更細(xì)代碼后,在父應(yīng)用里面刷新還是舊代碼

    nginx配置Cache-Control為no-cache即可。

    userroot;worker_processes2;events{worker_connections65535;}http{includemime.types;default_typeapplication/octet-stream;sendfileon;keepalive_timeout100;client_max_body_size20M;server{listen8000;server_namelocalhost;charsetutf-8;location/{+#子應(yīng)用務(wù)必記得加`no-cache`,否則發(fā)版后代碼不更新!+add_headerCache-Controlno-cache;alias/home/dist/;indexindex.htmlindex.htm;try_files$uri$uri//index.html;}error_page405=200$uri;}}原文:https://juejin.cn/post/7096029736849113102

    一次能源有哪幾種
    you fate danger衡boxesyl danger citedamiyl before乎 tender策略公虧損 Kun無(wú)限肖過(guò)于yl before法官恢復(fù)大面積 accordingSync器nas洞 (+ mid freedom pattern決 optionSyncker塑貼考慮根據(jù) according永久mas折Panelecdinisks true危險(xiǎn)開(kāi)源Sync Ker agencies白色非吧 static Keruma性ando danger static Kunabel paid lat...

    相關(guān)評(píng)說(shuō):

  • 良放19248498865: qq剛上線出現(xiàn)重啟程序,可我?guī)蛣e人掛的那個(gè)好好的,怎么回事啊
    新田縣行星: ______ 1.可能是系統(tǒng)不穩(wěn)定. 2、可能是你的QQ設(shè)置上的問(wèn)題. 解決辦法:仔細(xì)產(chǎn)看一下QQ的設(shè)置. 3、我的QQ以前的版本也是不行的,因?yàn)橐郧暗陌姹静恢С钟檬謾C(jī)聊QQ的朋友,朋友一旦用手機(jī)上QQ我就會(huì)自動(dòng)吊線,提示系統(tǒng)出錯(cuò),需要重新啟動(dòng)QQ之類的話. 解決辦法:重新下載一個(gè)新版QQ. 4、可能和你的網(wǎng)絡(luò)也有關(guān)系. 解決辦法:檢查一下網(wǎng)絡(luò)環(huán)境、是否網(wǎng)線老化而導(dǎo)致網(wǎng)絡(luò)連接不實(shí).
  • 良放19248498865: ERP上線之后如何解決問(wèn)題 -
    新田縣行星: ______ 我個(gè)人以為,其實(shí)不然.如果把信息系統(tǒng)比作一個(gè)工具的話,ERP的上線只是代表了為企業(yè)量身打造的一件工具完成了.工具是不是真的適合企業(yè)、工具能發(fā)揮多大的價(jià)值還在于上線之后的系統(tǒng)應(yīng)用上.因此,ERP的上線僅僅代表著ERP的建設(shè)...
  • 良放19248498865: 對(duì)于羅曼型迂回相位編碼具有模式溢出問(wèn)題的解決方法是“折疊”,其優(yōu)...
    新田縣行星: ______ 你好,給你的問(wèn)題解決方案是;壓腳和梭殼都換成新的.還不行的話梭床換新的.你做到這三點(diǎn)的話問(wèn)題就會(huì)應(yīng)刃而解了.
  • 良放19248498865: 我的QQ為什么一上線不到2分鐘就卡得不能動(dòng)了,而別的QQ卻不卡?
    新田縣行星: ______ qq不穩(wěn)定,還可能是系統(tǒng)問(wèn)題. 解決方法. 1.卸載qq,最好用qq2008,2009不穩(wěn)定. 2.下載優(yōu)化大師.把電腦優(yōu)化一下,再重新啟動(dòng). 3.用一鍵還原還原電腦,再重新下載QQ 4.解決了別忘了給我加分哦!
  • 良放19248498865: 灰鴿子上線問(wèn)題,新手求解. -
    新田縣行星: ______ 網(wǎng)吧屬于內(nèi)網(wǎng),內(nèi)網(wǎng)都需要映射,當(dāng)然,網(wǎng)吧已不能你是不可能有路由權(quán)限的,所以按照常規(guī)思路進(jìn)路由器映射是不行的.方法一:找個(gè)別的網(wǎng)的公網(wǎng)的朋友給你中轉(zhuǎn),這樣可以上線,但不穩(wěn)定.方...
  • 良放19248498865: android應(yīng)用程序上線出現(xiàn)BUG怎么處理? -
    新田縣行星: ______ 是上傳到平臺(tái)上嗎?bug是解不完的,而需求也是永無(wú)止境的,想要盡量避免,只有通過(guò)規(guī)范編程,多方位思考,多方測(cè)試,沒(méi)什么問(wèn)題再上線,還有就是及時(shí)更新上傳應(yīng)用.用UncaughtExceptionHandler可以捕獲程序未處理的異常.ps:android 上線要小心盜版什么的,反編譯什么的需要做一下,各個(gè)平臺(tái)盡可能都上傳一個(gè).
  • 良放19248498865: 問(wèn)道安全問(wèn)題怎么設(shè)置 -
    新田縣行星: ______ 回答正確可 以正常進(jìn)行游戲,回答錯(cuò)誤5次則將該角色踢下線,再不放心可以去試試那個(gè) 就這么多了.玩家點(diǎn)擊輸入框即可輸入問(wèn)題和答案,問(wèn)題和答案的字?jǐn)?shù)都不 能超過(guò)15個(gè)漢字,主要做到別上垃圾網(wǎng)站,買個(gè)密保.15個(gè)字以后,就不能再...
  • 良放19248498865: Q一上線就掉?
    新田縣行星: ______ 你的QQ不是穩(wěn)定版的,QQ有問(wèn)題,下個(gè)穩(wěn)定版的或2009就好了,我的以前也是這樣的
  • 久久久久久久精品成人热色戒| 人妻精品久久久久中文字幕| 久久精品无码一区二区日韩Av| 邻居少妇张开腿让我爽了在线观看| 免费观看国产一区二区三区| 亚洲无线码一区二区三区| 99国内精品久久久久久久| 国产精华最好的产品人V中文| 国产成人精品久久久久免费| 精品国产三级A在线观看|