Ich bin neu zu reagieren (1 Woche: P). Ich habe eine App, die eine API basierend auf einem Suchbegriff trifft. Aus diesen Ergebnissen kann ein Benutzer Lieblingsartikel aus den Ergebnissen ziehen. Wenn ich auf den Link für Favoriten klicke, werde ich auf die richtige Komponente verwiesen und die URL spiegelt diese Änderung wider. Wenn ich jedoch einen neuen Suchbegriff eingib, wird mir aus der Seitennavigationsleiste, die statisch immer dort ist, die Korrekturinformation in der richtigen Komponente angezeigt, aber die URL ändert sich nicht; es heißt immer noch http://localhost:3000/favorites
wo es solltehttp://localhost:3000
sein. Hier ist der relevante Code, wenn es noch mehr gibt, von dem Sie glauben, dass es nötig ist, um eine Schätzung zu riskieren, lassen Sie es mich bitte wissen. Die Routen:React Router nicht ändern URL
return(
<BrowserRouter >
<div className='routes'>
<Route path='/' component={App}/>
<Route path='/favorites' component={Favorites}/>
</div>
</BrowserRouter>
) }
Die SearchBox
Komponente:
return(
<form className="search-box" >
<input type="text" placeholder="Search.." name="search" autoComplete='off'/>
<button className="fa fa-search" type="submit" onClick={this.handleSearch.bind(this)}>
</button>
</form>
)
Und die SideNav
Komponente mit den Verbindungen:
return(
<nav className='naviagtion'>
<ul className='mainmenu'>
<div className='img-logout'>
<img src={this.props.info.image} alt='Avatar' />
<Logout handleLogout={this.handleLogout.bind(this)}/>
</div>
<SearchBox search={this.searchHandler.bind(this)}/>
<li>
<a href="/">home</a>
</li>
<li>
<a href="/favorites">favorites</a>
</li>
<li>
<a href="">playlists</a>
<ul className='submenu'>
<li>
<a href="">
<strong>list of lists</strong>
</a>
</li>
</ul>
</li>
<li>
<a href="">friends</a>
</li>
</ul>
</nav>
)
ich eine Menge Informationen der URL gesehen habe ändern, aber Die Komponente wird nicht gerendert. Das ist nicht mein Problem. Dann wird die Komponente korrekt gerendert, aber die URL reflektiert das nicht.
EDIT:
Hier ist, wo die SideBar in der Heim-Komponente wiedergegeben wird.
<div>
<SideBar
info={this.state.info}
logout={this.handleLogout.bind(this)}
search={this.handleSearch.bind(this)}
/>
<Main videos={this.state.videos}/>
</div>
Und hier ist die App.js
<div className='App'>
{localStorage.userData === undefined
? this.renderLogin()
: <Home logout={this.logout.bind(this)} deets=
{localStorage.userData}/>}
</div>
Das hat es geschafft! Vielen Dank! Meine Seitenleiste verschwand jedoch. Es ist nicht so eine große Sache und ich kann das wahrscheinlich ausarbeiten. Aber hast du einen Rat dafür? Muss ich das als "/" Komponente in die Routen einfügen? –
Wohin führen Sie die Links? Sind sie Teil der Sidebar? –
Ja. In meiner Home-Komponente rendere ich die Komponenten SideBar und Main. Main ist die Komponente, die die Suchergebnisse ausgibt. –