web前端培训ReactRouter必备知识点
时间:2023-03-28 00:38:44
HTML
鍓嶈█姣忔寮€鍙戜竴涓柊鐨勯〉闈紝閮藉厤涓嶄簡瑕佽璁′竴涓柊鐨刄RL锛岃繖灏辨槸鎴戜滑鐨勮矾鐢便€備簨瀹炰笂锛屽湪璁捐璺敱鏃讹紝涓嶄粎浠呮槸鍑犱釜绠€鍗曠殑鍗曡瘝鍜屾枩绾垮垎闅旂缁勬垚鐨勯摼鎺ャ€傚伓灏斾篃鍙互鑰冭檻鏄惁鏈夋洿鈥滀紭闆呪€濈殑璁捐鏂规硶鍜屾妧宸с€傝€屽湪杩欒儗鍚庯紝璺敱涓庣粍浠朵箣闂寸殑鍗忎綔鍏崇郴鍙堟槸鎬庢牱鐨勫憿锛熸墍浠ユ垜浠eact涓璕outer鐨勪娇鐢ㄤ负渚嬶紝鏁寸悊浜嗕竴浜涚煡璇嗙偣鍒嗕韩缁欏ぇ瀹秪React-Router鐨勫熀鏈娇鐢ㄩ€氬父鎴戜滑浣跨敤鐨勬槸React-Router(https://reactrouter.com/nativ...)瀹炵幇React鍗曢〉搴旂敤鐨勮矾鐢辨帶浠讹紝閫氳繃绠$悊URL瀹炵幇缁勪欢鐨勫垏鎹紝杩涜€屽憟鐜伴〉闈㈢殑鍒囨崲鏁堟灉銆傚畠鏈€鍩烘湰鐨勭敤娉曞涓嬶細import{Router,Route}from'react-router';render((),document.getElementById('app'));鎴栬€呭祵濂楄矾鐢憋細鍦≧eact-RouterV4涔嬪墠鍙互鐩存帴宓屽锛屽涓嬶細outerlayer
}>Innerlayer
}/>涓婇潰浠g爜涓紝鐞嗚涓婄敤鎴疯闂?in锛?div>outerlayer
浼氬厛琚姞杞斤紝鐒跺悗
innerlayer
浼氳鍔犺浇鍒伴噷闈€備絾鏄紝瀹為檯杩愯涓婇潰鐨勪唬鐮佸彂鐜帮紝瀹冨彧娓叉煋浜嗘牴鐩綍涓嬬殑鍐呭銆傚悗缁姣擱eact-Router鐗堟湰鍙戠幇鏄洜涓哄湪V4鐗堟湰鏀瑰彉浜嗗畠鐨勬覆鏌撻€昏緫銆傚師鍥犳嵁璇存槸涓轰簡璺佃React鐨勭粍浠跺寲鐞嗗康锛岃€屼笉鏄Route鏍囩鐪嬭捣鏉ュ彧鏄竴涓爣绛撅紙鏂板浜嗗钁╃煡璇嗭級銆傜幇鍦ㄥ湪杈冩柊鐨勭増鏈腑锛屽彲浠ヤ娇鐢≧ender鏂规硶瀹炵幇宓屽銆?Routepath="/"render={()=>(
)}/>姝ゆ椂璁块棶/in鏃讹紝鈥滃灞傗€濆拰鈥滃唴灞傗€濅細涓€璧锋樉绀恒€傚悓鏍凤紝璁块棶/others鏃讹紝鈥滃灞傗€濆拰鈥渙thers鈥濅細涓€璧锋樉绀恒€傝矾鐢卞弬鏁颁紶閫掓妧宸у湪瀹為檯寮€鍙戜腑锛岀粡甯搁渶瑕佸湪椤甸潰鍒囨崲鏃朵紶閫掍竴浜涘弬鏁般€傛湁浜涘弬鏁伴€傚悎鏀惧湪Redux涓綔涓哄叏灞€鏁版嵁锛屾垨鑰呴€氳繃涓婁笅鏂囦紶閫掞紝姣斿涓氬姟鐨勪竴浜涘叡浜暟鎹紝浣嗘槸鏈変簺鍙傛暟閫傚悎鏀惧湪URL涓紶閫掞紝姣斿椤甸潰绫诲瀷鎴栬€呭敮涓€鎬ц缁嗕俊鎭〉闈腑鏂囨。鐨勬爣璇唅d銆傚湪澶勭悊URL鐨勬椂鍊欙紝React-Router闄や簡甯﹀弬鏁扮殑闂彿杩樿兘涓烘垜浠仛浠€涔堝憿锛熷叾涓紝Route缁勪欢鐨刾ath灞炴€у彲浠ョ敤鏉ユ寚瀹氳矾鐢辩殑鍖归厤瑙勫垯銆傚満鏅竴璇存槑锛氬鏋滄兂璁╀竴涓櫘閫氱殑URL鏈変竴涓櫘閫氱殑鍙傛暟锛岄偅涔堟垜浠彲浠ヨ繖鏍峰仛锛氭渚婣锛氳矾鐢卞弬鏁皃ath="/book/:id"锛屾垜浠彲浠ヤ娇鐢ㄥ啋鍙?鍙傛暟鍚嶈繖鏍风殑鏂瑰紡锛屾坊鍔犺浼犻€掔粰URL鐨勫弬鏁般€傛鏃讹紝褰撳弬鏁板悕锛堟湰渚嬩负id锛夊搴旂殑鍊煎彂鐢熷彉鍖栨椂锛屼細璁や负鏄笉鍚岀殑URL_front-end璁粌銆傛渚婤锛氭煡璇㈠弬鏁皃ath="/book"濡傛灉鎯冲湪椤甸潰璺宠浆鏃舵妸鍙傛暟鍖呭惈鍦ㄩ棶鍙蜂腑锛岄偅涔堣矾寰勫彲浠ョ洿鎺ヨ璁℃垚棰勫畾鐨勶紝鐢辫烦杞柟鎷兼帴鍙傛暟.璺宠浆鐨勬椂鍊欐湁涓ょ甯﹀弬鏁扮殑褰㈠紡銆備竴绉嶆槸鍦↙ink缁勪欢鐨則o鍙傛暟涓紶閫掍竴涓厤缃瓧绗︿覆锛岀敤闂彿鍙栧弬鏁般€傚彟涓€绉嶆槸to鍙傛暟鍙互鎺ュ彈涓€涓璞★紝鍏朵腑浣犺浼犻€掔殑鍙傛暟鍙互鍦ㄦ悳绱㈠瓧娈典腑閰嶇疆銆?Linkto="/book?id=111"/>//鎴?Linkto={{pathname:'/book',search:'?id=111',}}/>姝ゆ椂锛屽亣璁惧綋鍓峱ageURL涓殑id鐢?11鏀逛负222鏃讹紝璺敱瀵瑰簲鐨勭粍浠讹紙涓婁緥涓厤缃甊eact-Route鏃秔ath="/book"瀵瑰簲鐨刾age/component锛変細琚洿鏂帮紝鍗筹紝componentDidUpdate鏂规硶浼氳鎵ц锛屼絾涓嶄細Mounting锛屽嵆componentDidMount鏂规硶涓嶄細琚墽琛屻€侰aseC:Invisiblequeryparameterswithpath="/book"璺緞杩樻槸璁捐鐨勫簲璇ョ殑锛岃烦杞殑鏃跺€欏彲浠ラ€氳繃Link涓殑state鎶婂弬鏁颁紶閫掔粰璺敱瀵瑰簲鐨勯〉闈€?Linkto={{pathname:'/book',state:{id:111}}}/>浣嗘槸闇€瑕佹敞鎰忕殑鏄紝杩欑鏂瑰紡铏界劧涓嶄細鏄庢枃浼犻€掓煡璇㈠弬鏁帮紝浣嗘槸椤甸潰鍒锋柊浼氫骇鐢熷湪涓㈠け鍙傛暟锛堝瓨鍌ㄧ姸鎬佺殑閫氱梾锛夛紝鎵€浠ワ紝寰€寰€涓嶆帹鑽悀~锛堝叾瀹炴垜涓嶅笇鏈涙槑鏂囪鍔犲瘑锛屼絾鏄竴鑸晱鎰熶俊鎭笉鎺ㄨ崘浼犻€掑湪URL涓瓇锛夊満鏅?璇存槑锛氬浜庣紪杈?璇︽儏椤甸潰锛屽鏋滆鍒嗕韩涓€涓〉闈紝閫氳繃涓嶅悓鐨勫弬鏁板尯鍒哢RL銆傝繖鏃舵垜浠笇鏈涘弬鏁板繀椤绘槸edit銆乨etail銆乤dd鍏朵腑涔嬩竴锛屽惁鍒欓渶瑕佽烦杞埌404NotFound椤甸潰銆俻ath='/book/:pageType(edit|detail|add)'濡傛灉涓嶆坊鍔犳嫭鍙蜂腑鐨勫唴瀹?edit|detail|add)锛屽綋浣犱紶鍏ラ敊璇殑鍙傛暟鏃讹紙姣斿鐢ㄦ埛璇搷浣滄垨闅忔剰鎷兼帴URL锛夛紝鍒欓〉闈笉浼氳404鎷︽埅锛岃€屾槸缁х画娓叉煋椤甸潰鎴栬皟鐢ㄦ帴鍙o紝浣嗘鏃跺緢鍙兘瀵艰嚧鎺ュ彛鍙傛暟閿欒鎴栭〉闈㈤敊璇€傚満鏅笁鎻忚堪锛氭柊椤甸潰鍜岀紪杈戦〉闈㈠緢鍍忥紝鎴戠殑鏂伴〉闈篃鎯冲拰缂栬緫/璇︽儏鍏变韩涓€涓〉闈€備絾鏄柊寤洪〉闈笉闇€瑕乮d锛岀紪杈?璇︽儏椤甸渶瑕乮d銆備娇鐢ㄥ悓涓€涓〉闈㈡€庝箞鍔烇紵path='/book/:pageType(edit|detail|add)/:id?'涓嶇敤鎷呭績锛屾偍鍙互浣跨敤?瑙e喅瀹冦€傝〃绀篿d涓嶆槸蹇呴』鍙傛暟锛屽彲浠ヤ紶涔熷彲浠ヤ笉浼犮€傚満鏅?鎻忚堪锛氭垜鐨刬d鍙兘鏄暟瀛楋紝涓嶈瀛楃涓叉€庝箞鍔烇紵path='/book/:id(\\d+)'杩欐椂鍊欏綋id涓嶆槸鏁板瓧鏃讹紝浼氳烦杞埌404锛岃涓烘壘涓嶅埌璇RL瀵瑰簲鐨勯〉闈€傝繖涔堝搴曞眰渚濊禆锛孯outer鏄€庝箞瀹炵幇鐨勫憿锛熶簨瀹炰笂锛屽畠鐨勫簳灞備緷璧栦簬path-to-regexp(https://github.com/pillarjs/p...)鏂规硶銆倂arpathToRegexp=require('path-to-regexp')//pathToRegexp(path,keys,options)//渚嬪瓙varkeys=[]varre=pathToRegexp('/foo/:bar',keys)//re=/^/foo/(1+?)/?$/i//keys=[{name:'bar',prefix:'/',delimiter:'/',optional:false,repeat:false,pattern:'2+锛焳]delimiter锛氶噸澶嶅弬鏁扮殑鍒嗛殧绗︼紝榛樿涓?/'锛屽彲浠ラ厤缃竴浜涘叾浠栧父鐢ㄧ殑璺敱姝e垯閫氶厤绗︼細?鍙傛暟鍚嶏紝浣嗗彧鑳芥槸璺敱瑙勫垯锛屾瘮濡備笅闈唬鐮佷腑/:foo鍚庨潰鐨勫弬鏁帮細varre=pathToRegexp('/:foo/(.*)',keys)//matchexcept"\n"anycharacter//keys=[{name:'foo',...},{name:0,...}]re.exec('/test/route')//=>['/test/route','test','route']涔熶細琚纭В鏋愶紝浣嗘槸鍦ㄦ柟娉曞鐞嗗唴閮紝鏈懡鍚嶇殑鍙傛暟鍚嶄細琚浛鎹负鏁扮粍涓嬫爣銆傚彇璺敱鍙傛暟path鐨勫弬鏁帮紝鍙互閫氳繃this.props.match鑾峰彇渚嬪锛?/url涓?book/:pageType(edit|detail|add)const{match}=this.props;const{pageType}=鍖归厤銆俻arams;鍥犱负#锛?涔嬪悗鐨勬墍鏈夊唴瀹归兘浼氳璁や负鏄痟ash鐨勪竴閮ㄥ垎锛寃indow.location.search鏃犳硶鑾峰彇甯﹂棶鍙风殑鍙傛暟銆傛瘮濡傦細http://aaa.bbb.com/book-cente...閭d箞鍦≧eact-Router涓紝鍙互閫氳繃this.props.location鑾峰彇甯﹂棶鍙风殑鍙傛暟锛堝畼鏂规帹澧欚煈嶏級銆備釜浜虹悊瑙f槸鍥犱负React-Router甯垜浠仛浜嗗鐞嗭紝閫氳繃璺敱鍜屽搱甯屽€硷紙window.location.hash锛夊皝瑁呬簡瑙f瀽銆備緥濡傦細//url鏄?book?pageType=editconst{location}=this.props;constsearchParams=location.search;//?pageType=edit瀹為檯涓婃墦鍗扮殑鏄痯rops鍙傛暟锛宼his.props.history.location涔熷彲浠ュ彇闂彿鍙傛暟锛屼絾涓嶆帹鑽愶紝鍥犱负React鐨勭敓鍛藉懆鏈燂紙componentWillReceiveProps,componentDidUpdate锛変細瀵艰嚧涓嶅彲闈犮€傦紙鍙傝€冿細https://blog.csdn.net/zrq1210...锛塕eact-Router2.0鏃╂湡鐗堟湰鍙互浣跨敤location.query.pageType鑾峰彇鍙傛暟锛屼絾鏄疺4.0鍘绘帀浜嗭紙鏈変簺浜鸿涓篞uery鍙傛暟涓嶆槸URL鐨勪竴閮ㄥ垎锛屾湁浜鸿涓虹涓夋柟搴撳緢澶氾紝寮€鍙戣€呰嚜宸辫В鏋愪細濂戒竴浜涖€傚浜庝笂涓€鑺傚満鏅竴涓殑CaseC锛屽綋query鍙傛暟鏄殣韬甫杩涙潵鐨勶紙浠巗tate甯﹁繃鏉ワ級锛屽彲浠ュ湪this.props.location.state涓幏鍙栧埌锛堜笉鎺ㄨ崘锛屼笉鎺ㄨ崘锛宺efresh涓嶄細~锛夊紑鍏?div>
image
}/>Book
}/> 濡傛灉
鏄钩閾虹殑锛堢敤div鍖呰9锛屽洜涓篟outer涓嬪彧鑳芥湁涓€涓厓绱狅級锛岃緭鍏?router/book锛屽浘鐗囧拰涔︾睄閮戒細娓叉煋濡傛灉浣犳兂瑕佸噯纭湴鍛堢幇鍏朵腑涔嬩竴锛屾偍闇€瑕丼witch
Image
}/>Book
}/>Switch鐨勬剰鎬濇槸鏍规嵁涓嶅悓鐨勮矾寰勶紝鍑嗙‘娓叉煋涓嶅悓Routes涓嬬殑缁勪欢銆備絾鏄坊鍔犱簡Switch涔嬪悗锛岃矾鐢卞尮閰嶈鍒欐槸浠庝笂鍒颁笅鎵ц锛屼竴鏃︽壘鍒板尮閰嶏紝鍏朵綑瑙勫垯灏嗕笉鍐嶅尮閰嶏紝鍥犳锛屼綘涓€瀹氭槸鈥渃ar鈥濆湪浣跨敤瀹冩椂浠ュ悇绉嶅彲鑳界殑鏂瑰紡鏈夋晥鈥濄€備笂闈唬鐮佷腑锛屽綋鐢ㄦ埛璁块棶/router/book鏃讹紝涓嶄細瑙﹀彂绗簩鏉¤矾鐢辫鍒欙紙涓嶄細鏄剧ず鈥渂ook鈥濓級锛屽洜涓哄畠浼氬尮閰嶈鍒?router/:type銆傛墍浠ュ甫鍙傛暟鐨勮矾寰勪竴鑸啓鍦ㄨ矾鐢辫鍒檁web鍓嶇璁粌鐨勬渶涓嬮潰銆傝矾鐢辩殑鍩烘湰鍘熺悊璺敱鐨勪綔鐢ㄦ槸锛氭帶鍒禪RL鍙樺寲锛屾敼鍙樻祻瑙堝櫒涓殑鍦板潃銆俁outer鐨勪綔鐢細褰揢RL鍙戠敓鍙樺寲鏃讹紝瑙﹀彂娓叉煋锛屾覆鏌撶浉搴旂殑缁勪欢銆俇RL鏈変袱绉嶏紝涓€绉嶄笉甯?锛屼竴绉嶅甫#锛屽垎鍒搴擝rowse妯″紡鍜孒ash妯″紡銆傞€氬父锛屽湪鍗曢〉搴旂敤涓紝鏈変袱绉嶆柟娉曞彲浠ュ湪涓嶉噸鏂板姞杞介〉闈㈢殑鎯呭喌涓嬫洿鏀筓RL锛氭儏鍐?锛堜細瑙﹀彂璺敱鐩戝惉浜嬩欢锛夛細鐐瑰嚮鍓嶈繘銆佸悗閫€锛屾垨鑰呰皟鐢╤istory.back()銆乭istory.forward()Case2锛堜笉浼氳Е鍙戣矾鐢辩洃鍚簨浠讹級锛氬湪缁勪欢涓皟鐢╤istory.push()鍜宧istory.replace()锛屾墍浠ュ弬鑰冦€婃簮鐮佸垎鏋愩€嬶紝鍏呭垎鐞嗚В杩欐React-Router鐨勮矾鐢卞師鐞嗭紙https://blog.csdn.net/zl_alie...)鏂囩珷锛岄拡瀵逛互涓婁袱涓狢ase锛屼互鍙婅繖涓や釜Case瀵瑰簲鐨勪袱绉嶆ā寮忥紝鍋氬涓嬫€荤粨銆傛祻瑙堝櫒妯″紡妗堜緥涓€锛歎RL鏀瑰彉锛岃Е鍙戣矾鐢辩洃鍚簨浠秔opstate锛岀劧鍚庣洃鍚簨浠剁殑鍥炶皟鍑芥暟handlePopState鍦ㄥ洖璋冧腑瑙﹀彂history鐨剆etState鏂规硶鐢熸垚鏂扮殑location瀵硅薄銆傚綋鐘舵€佸彂鐢熷彉鍖栨椂锛岄€氱煡Router缁勪欢鏇存柊浣嶇疆锛岄€氳繃context涓婁笅鏂囦紶閫掔粰鍖归厤鐨凴oute缁勪欢銆傛渶鍚庯紝
缁勪欢鍙栧嚭鐩稿簲鐨勫唴瀹癸紝浼犻€掔粰娓叉煋椤甸潰杩涜娓叉煋鏇存柊銆?绠€鍖栫増handlePopState(鐩戝惉浜嬩欢鐨勫洖璋?/consthandlePopState=(event)=>{/鑾峰彇褰撳墠浣嶇疆瀵硅薄/constlocation=getDOMLocation(event.state)constaction='POP'/transitionManagerhandleroutetransitions/杩囨浮缁忕悊銆俢onfirmTransitionTo(location,action,getUserConfirmation,(ok)=>{if(ok){setState({action,location})}else{revertPop(location)}})}鎯呭喌浜岋細浠istory.push涓轰緥锛岄鍏堟牴鎹綘瑕佽烦杞殑璺緞鍒涘缓涓€涓柊鐨刲ocation瀵硅薄锛岀劧鍚庨€氳繃window.history.pushState锛圚5鎻愪緵鐨凙PI锛夋柟娉曟敼鍙樻祻瑙堝櫒褰撳墠鐨勮矾鐢憋紙涔熷氨鏄綋鍓嶇殑url锛夛紝鏈€鍚庨€氱煡Router閫氳繃setState鏂规硶鏉ヨЕ鍙戠粍浠舵洿鏂般€俢onstpush=(path,state)=>{constaction='PUSH'/鍒涘缓浣嶇疆瀵硅薄/constlocation=createLocation(path,state,createKey(),history.location)/鍒ゆ柇鏄惁鍙互杩涜璺敱杞崲/transitionManager.confirmTransitionTo(location,action,getUserConfirmation,(ok)=>{...//杩欓噷鐪佺暐浜嗕竴浜涗唬鐮乧onsthref=createHref(location)const{key,state}=locationif(canUseHistory){/changeurl/globalHistory.pushState({key,state},null,href)if(forceRefresh){window.location.href=href}else{/鏀瑰彉react-routerlocation瀵硅薄锛屽垱寤烘洿鏂扮幆澧?setState({action,location})}}else{window.location.href=href}})}Hash鏂瑰紡妗堜緥涓€锛氭坊鍔犵洃鍚紝褰揢RL鐨凥ash鍙戠敓鍙樺寲鏃讹紝瑙﹀彂hashChange娉ㄥ唽鐨勫洖璋冿紝鍦ㄥ洖璋冧腑鎵ц绫讳技鐨勬搷浣滐紝鐒跺悗鏄剧ず涓嶅悓鐨勫唴瀹广€倃indow.addEventListener('hashchange',function(e){/listenforchanges/})鎯呭喌浜岋細history.push璋冪敤window.location.hash鏀瑰彉璺敱銆俬istory.replace搴曞眰鏄皟鐢╳indow.location.replace鏀瑰彉璺敱銆傜劧鍚巗etState閫氱煡鏇存敼銆傛牴鎹竴浜涘弬鑰冭祫鏂欙紝涓轰簡鍏煎鎬э紙H5鏂瑰紡涓嶅吋瀹笽E10鍙婁互涓嬬増鏈級锛岃矾鐢辩郴缁熷唴閮ㄤ娇鐢℉ash鏂瑰紡浣滀负鍒涘缓History瀵硅薄鐨勯粯璁ゆ柟寮忋€傦紙杩欓噷濡傛灉鏈夌枒闂紝娆㈣繋鎸囨~锛塪va/Router鍦ㄥ疄闄呴」鐩腑鍙戠幇Link鍜孯oute鏄粠dva/router瀵煎叆鐨勶紝閭d箞Dva鍦ㄨ繖閲岄潰鍋氫簡浠€涔堬紵绛旓細濂藉儚娌℃湁鐗规畩澶勭悊銆俤va瀵筊eact-Router鍋氫簡涓婂眰灏佽锛岄粯璁や細杈撳嚭React-Router(https://github.com/ReactTrain...)鎺ュ彛銆傛垜浠RouterCase1鍋氫簡涓€浜涘鐞嗭細鍦ㄩ」鐩唬鐮佺殑src鐩綍涓嬶紝涓嶇鏈夊灏戜釜鏂囦欢澶癸紝璺敱涓€鑸兘浼氱淮鎶ゅ湪鍚屼竴涓猺outer涓€傝秺鏉ヨ秺闀匡紝涓嶅ソ鎵撅紝涓嶅ソ淇敼銆傛墍浠ユ垜浠彲浠ュ仛涓€浜涘皬鏀瑰姩锛屽湪src涓嬬殑鍚勪釜鏂囦欢澶逛腑鍒涘缓鑷繁鐨勮矾鐢遍厤缃枃浠讹紝浠ヤ究绠$悊鑷繁鐨勮矾鐢便€備絾鏄湪杩欑鎯呭喌涓嬶紝React-Router鏃犳硶璇嗗埆锛屾墍浠ユ垜浠啓浜嗕竴涓狿lugin鏀惧湪Webpack涓紝鐩殑鏄眹鎬绘瘡涓枃浠跺す涓嬬殑璺敱锛岀敓鎴愪竴涓猺outer-config.js鏂囦欢銆備箣鍚庡皢鏂囦欢涓殑鍐呭瑙f瀽涓虹粍浠堕渶瑕佺殑鐩稿叧鍐呭銆傛渚嬩簩锛氳矾鐢辩殑Hash鏂瑰紡铏界劧鍏煎鎬уソ锛屼絾涔熷瓨鍦ㄤ竴浜涢棶棰橈細瀵筍EO鍜屽墠绔煁鐐逛笉鏄緢鍙嬪ソ锛屼笉鏄撳尯鍒嗚矾寰勩€傚綋鍘熷椤甸潰鏈夐敋鐐规椂锛屼娇鐢℉ash鏂瑰紡浼氫骇鐢熷啿绐併€傝繘琛屼簡浠嶩ash璺敱鍒癇rowser璺敱鐨勬敼閫犮€傛瘮濡傚師閾炬帴鏄細http://aaa.bbb.com/book-cente...鏀归€犳柟妗堟槸锛氬幓鎺?history/createBrowserHistory'涓殑#importcreateHistory锛屽鍔犲涓嬮厤缃唬鐮侊紱constapp=dva({history:createHistory({basename:'/book-center',}),onError,});鍚屾椂锛屼负浜嗛伩鍏嶇敤鎴疯闂棫椤甸潰鏃跺嚭鐜?04锛屽墠绔渶瑕佸湪Redirect涓厤缃噸瀹氬悜锛屽湪Nginx椤甸潰杞彂涓厤缃畂ldHash銆侰ase3锛氬湪瀹為檯椤圭洰涓紝鍏跺疄鎴戜滑涔熶細鑰冭檻鐢ㄦ埛鏈巿鏉冩椂鐨勮矾鐢遍噸瀹氬悜锛岄〉闈?04鏃剁殑璺敱閲嶅畾鍚戠瓑涓嶅悓鎯呭喌銆備互涓嬫渚嬪拰浠g爜浠呬緵璇昏€呭弬鑰儈
{getRoutes(match.path,routerData).map(item=>(//鐢ㄦ埛鏈巿鏉冨鐞嗭紝AuthorizedRoute鏄」鐩疄鐜扮殑澶勭悊缁勪欢))}//榛樿璺宠浆椤甸潰//椤甸潰404澶勭悊}/>鏂囩珷杞浇鑷墠绔妧鏈紭鍖?鈫‐/鈫?/p>