簡體   English   中英

流星/反應路由器4-主頁和連接的用戶

[英]Meteor/React Router 4 - Homepage and connected user

另一個帖子詢問您我所處的“狀況”,這令人失望,因為我的路由器創建了太多刷新,並且實際上不必使用React刷新頁面的一部分。

我想要以下內容:

當我轉到“ ./”並且沒有用戶連接時,它會顯示一個主頁(沒有頁眉和頁腳)。頁眉和頁腳的相關頁面。

因此,未連接的事實並不顯示頁眉/頁腳僅適用於“ ./”地址。

我如何解決它,但並不令人滿意,因為似乎我每次更改路由器時,即使在兩個頁面之間,頁面標題都一直在重新呈現。

我有第一個路由器AppRouter:

 const AppRouter = () => (
    <BrowserRouter>
        <div className="content">
            <Switch>
                <Route path="/" component={Index} exact={true} />
                <SubRouter />
            </Switch>
        </div>
    </BrowserRouter>
);

export default AppRouter;

我的索引是這樣的:

export class Index extends React.Component {
    render() {
        if (this.props.user){
            return (
                <SubRouter />
            )
        } else {
            return (
                <Homepage />
            )   
        }
    }
}

因此,如果沒有用戶,則主頁顯示是否有用戶返回到SubRouter。

SubRouter是這樣的:

export class SubRouter extends React.Component {
    (...)
    render(){
        return (
            <div className="fullpage">
            {this.state.inboxOpen ? <Inbox closeInbox={this.closeInbox} oneUserInboxId={this.state.oneUserInboxId} /> : undefined }
                <Header openInbox={this.openInbox} closeInbox={this.closeInbox} />
                <Switch>
                    <Route path="/" component={Dashboard} exact={true} />
                    <Route path="/admin" component={Admin} exact={true} />
                    <Route path="/account" component={Account} exact={true} />
                    <Route path="/settings" component={Settings} exact={true} />
                    <Route path="/faq" component={Faq} exact={true} />
                    <Route path="/cgv" component={Cgv} exact={true}/>
                    <Route path="/legal" component={Legal} exact={true}/>
                    <Route path="/login" component={Login} exact={true}/>
                    <Route path="/signup" component={Signup} exact={true}/>
                    <Route path="/notifications" render={() => (<Dashboard notifications={true} />)} exact={true} />
                    }} />
                    <Route path="/reset-password/:token" component={ResetPassword} />
                    <Route path="/forgot_password" component={ForgotPassword} exact={true} />
                    <Route path="/post/:postId" component={OnePost} />
                    <Route path="/*" component={NotFound} />
                </Switch>
                <Footer />
            </div>
        )
    }
}

因此,這段代碼是“有效的”,但是以某種方式我們可以看到不應發生的重新渲染,我願意對任何優化的想法持開放態度。 提前致謝 !

問題來自這里:

 const AppRouter = () => (
    <BrowserRouter>
        <div className="content">
            <Switch>
                <Route path="/" component={Index} exact={true} />
                <SubRouter />
            </Switch>
        </div>
    </BrowserRouter>
);

export default AppRouter;

這里不應該重新渲染SubRouter,因為它已經在HomePage中渲染了。 好的代碼是:

 const AppRouter = () => (
    <BrowserRouter>
        <div className="content">
            <Switch>
                <Route path="/" component={Index} exact={true} />
            </Switch>
        </div>
    </BrowserRouter>
);

export default AppRouter;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM