後停留頁面上我有一個路由設置像這樣在我的應用程序:陣營路由器新的頁面呈現和前一個組件做browserhistory.push(「/路徑」)
<Router history={browserHistory}>
<Route path="/" component={App}>
<Route path="/books" component={Main} url='/polls/getbooks/'/>
<Route path="/books/bookdetail" component={BookDetail} />
</Route>
</Router>
我的應用組件看起來像這樣:
class App extends React.Component {
pageContent() {
let content = <Spinner/>;
if (!this.props.dataLoading) {
content = (
<ReactCSSTransitionGroup
component="div"
transitionName="bobon-transition"
transitionEnterTimeout={500}
transitionLeaveTimeout={500}
transitionAppear={true}
>
{ React.cloneElement(this.props.children, {
key: this.props.location.pathname
}) }
</ReactCSSTransitionGroup>
);
}
return content;
}
render() {
let content = null;
if (!this.state.authed) {
content = (
<div className="pf-authed">
<AppHeader/>
<div className="bobon-page-content page-content">
{ this.pageContent() }
</div>
<AppFooter/>
</div>
);} else {
content = (
<div className="pf-authed">
<AppHeaderAuthed/>
<div className="bobon-page-content page-content">
{ this.pageContent() }
</div>
<AppFooter/>
</div>
);
}
}
這裏是我的主要成份:
class Main extends React.component {
render() {
if(!this.state.loaded) {
return <Spinner/>
}
if(this.state.authed) {
content = (
<div >
<BookList apiData = {this.state.childData}/>
</div>
);
} else {
content = (
<div>
<LoginForm/>
</div>
);
}
return content;
}
}
當用戶在登錄頁面呈現和正確他看到了'BookList'組件。然而,在Booklist中,當用戶選擇一本書時,使用browserHistory.push('/ books/bookdetail')導航到'BookDetailView'。問題是,在書中詳細查看「書目」組件停留頁和頁面看起來像這樣:
<BookDetail>
<BookList>
如果我是輸入到我的瀏覽器/書籍/ bookdetail那麼該視圖正確的渲染
<BookDetail>
爲什麼當我使用browserHistory.push()頁面時,bookdetail呈現在bookdetail上?
非常感謝。
喜彼得,救星! – freeBeerTomorrow
嗨Piotr,問題已經回來了。我編輯了我的問題,並添加了我用我的標題欄在App.jsx中使用的渲染方法。頭組件(AppHeaderAuthed)是那些執行browserHistory.push('/ books/bookdetail「)的組件,我認爲它們是造成這個問題的原因之一。 – freeBeerTomorrow
@freeBeerTomorrow在沒有查看所有模塊的源代碼的情況下很難調試。當您使用'BookDetailView'時,是否發生了URL?它是否更新爲'/ books/bookdetail'? –