第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會有你想問的

為什么我在 <Router> 內(nèi)部渲染后在外面?

為什么我在 <Router> 內(nèi)部渲染后在外面?

桃花長相依 2023-03-03 10:35:19
我正在構(gòu)建一個(gè) Reactjs 應(yīng)用程序。我不明白為什么這樣做是錯(cuò)誤的并導(dǎo)致我出現(xiàn)此錯(cuò)誤:Error: Invariant failed: You should not use <Redirect> outside a <Router>這是代碼:index.js 中的一個(gè)簡單路由器ReactDOM.render(    <Router>        <Switch>            <Route exact path="/" component={(props) => <AppContainer><HomePage {...props}/></AppContainer>}/>            <Route exact path="/register" component={(props) => <AppContainer><RegisterPage1 {...props}/></AppContainer>}/>        </Switch>    </Router>, document.getElementById('root'));AppContainer 只是一個(gè)帶有 id 的簡單 div:export default function AppContainer({children}) {    return (        <div id="appContainer">{children}</div>    );}在 RegisterPage1 內(nèi)部,我在一些過程后觸發(fā)了“appContainer”上的渲染。這應(yīng)該在路由器內(nèi)呈現(xiàn)一個(gè)新組件。ReactDOM.render(<RegisterPage2 data={res}/>, document.getElementById('appContainer'));在 RegisterPage2 中,我正在使用并收到上述錯(cuò)誤。if (redirectHome) return (<Redirect to={"/"}/>)else {    return (//RegisterPage2Components    )}由于我在路由器內(nèi)部渲染,我不明白為什么我可以在 RegisterPage1 中使用重定向而不能在 RegisterPage2 中使用。我檢查了 RegisterPage2,路由器仍然在這里(通過在路由器和交換機(jī)之間添加一些隨機(jī)文本)。如果這樣渲染是錯(cuò)誤的,那么不添加新路由的正確方法是什么?代碼沙盒: https://codesandbox.io/s/autumn-leftpad-7s5sy? file=/src/index.js
查看完整描述

2 回答

?
Smart貓小萌

TA貢獻(xiàn)1911條經(jīng)驗(yàn) 獲得超7個(gè)贊

由于我在路由器內(nèi)部渲染,我不明白為什么我可以在 RegisterPage1 中使用重定向而不能在 RegisterPage2 中使用。

React Dev Tools 可以在這里幫助你

http://img1.sycdn.imooc.com//64015d1500015aa104980860.jpg

正如您在圖像底部看到的那樣,RegisterPage2它不在 Router 組件內(nèi)。將它與圖像的最頂部進(jìn)行比較,React App 被包裹在一個(gè)BrowserRouter. 您將了解為什么會出現(xiàn)這些錯(cuò)誤。

如果這樣渲染是錯(cuò)誤的,那么不添加新路由的正確方法是什么?

您提出的這個(gè)要求非常困難。react-router如果兩個(gè) React 應(yīng)用程序沒有共同的 Router 父級,則很難在它們之間遍歷。我建議您使用經(jīng)典的服務(wù)器端 http 請求(例如錨標(biāo)記或window.href.location),而不是為您正在開發(fā)的此功能使用單頁應(yīng)用程序技術(shù)


查看完整回答
反對 回復(fù) 2023-03-03
?
烙印99

TA貢獻(xiàn)1829條經(jīng)驗(yàn) 獲得超13個(gè)贊

這個(gè)問題是由這條線引起的


ReactDOM.render(

    <RegisterPage2 data={res}/>,

    document.getElementById('appContainer')

);

此行應(yīng)該將RegisterPage2組件呈現(xiàn)為React 應(yīng)用程序的根組件。


在RegisterPage2你使用的時(shí)候Redirect,假設(shè)RegisterPage2已經(jīng)有一個(gè)父組件,它已經(jīng)使用了該react- router-dom Router組件。因?yàn)樗讳秩緸楦M件而沒有被包裝在Router組件中,這就是您收到該錯(cuò)誤的原因。


查看完整回答
反對 回復(fù) 2023-03-03
  • 2 回答
  • 0 關(guān)注
  • 117 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號