Je rencontre un problème pour créer un lien vers une page externe dans React.
Mon application utilise react-router-dom et j'ai mon App.js comme ceci:
<ul className="booking-sites p-0">
{accommodations && accommodation.bookings.map((booking, index) => {
return (
<li key={index} className="booking-method">
<a href={booking.link} className="booking-link">
<img
src={booking.logo}
alt={`booking method ${index}`}
className="booking-icon"
/>
</a>
</li>
);
})}
</ul>
Dans ma page d' AccommodationPage j'ai un lien vers une page externe
function App() {
return (
<Provider store={store}>
<ReactReduxFirebaseProvider {...rrfProps}>
<div className="App my-content">
<Router>
<Header />
<Switch>
<Route exact path="/" component={Home} />
<Route exact path="/accommodations" component={Accommodations} />
<Route exact path="/rentals" component={RentalServices} />
<Route exact path="/tours" component={DailyTours} />
<Route exact path="/contacts" component={ContactUs} />
<Route
exact
path="/editaccommodations"
component={EditAccommodations}
/>
<Route
exact
path="/addaccommodation"
component={AddAccommodation}
/>
<Route
exact
path="/accommodations/:id"
component={AccommodationPage}
/>
<Route component={NotFound} />
</Switch>
<Footer />
</Router>
</div>
</ReactReduxFirebaseProvider>
</Provider>
);
}
booking.link est par exemple "www.foo.com"
Lorsque je clique sur le lien, au lieu d'ouvrir "www.foo.com", il ouvre "http: // localhost: 3000 / accommodation / www.foo.com"
3 Réponses :
Vous pouvez le faire en utilisant Link comme ci-dessous. (Remplacer l' a étiquette à ce sujet )
<Link to={{ pathname: booking.link }} />
De plus, si vous souhaitez ouvrir le lien dans un nouvel onglet, ajoutez simplement target="_blank" .
Essayez de modifier le booking.link pour qu'il ressemble à http://www.example.com . Incluez le http:// .
les suggestions que vous m'avez données semblaient ne pas fonctionner, j'ai donc joué un peu avec et en essayant d'ajouter le http:// partir du composant (juste pour un essai), j'ai trouvé la solution:
<a href={`${booking.link}`} className="booking-link">
<img
src={booking.logo}
alt={`booking method ${index}`}
className="booking-icon"
/>
</a>
Mais je n'ai pas vraiment compris ce qui s'est passé ... savez-vous pourquoi maintenant ça marche?
Duplicata du lien externe React-Router
@MrUpsidown ce n'est pas le cas, le message que vous avez lié concerne un problème différent. Merci.