-1
votes

Redirection vers un site Web externe dans React

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"


2 commentaires

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.


3 Réponses :


0
votes

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" .


0 commentaires

0
votes

Essayez de modifier le booking.link pour qu'il ressemble à http://www.example.com . Incluez le http:// .


0 commentaires

0
votes

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?


0 commentaires