Перенаправление на внешнюю ссылку с помощью React - PullRequest
0 голосов
/ 02 апреля 2020

Я нашел это решение для перенаправления на внешнюю ссылку, и оно сработало для одной из моих страниц.

Но для другой страницы оно больше не работает, и Я не уверен почему.

redirect.jsx:

import React from "react";
import { BrowserRouter, Route } from 'react-router-dom'

export default class Redirect extends React.Component {
    render() {
        return (
            <Route path='/hello' component={() => {
            window.location.href = "example.com";
            return null;}}/>
        );
    }
}

test.jsx:

import React from "react";
import ReactDOM from "react-dom";
import {BrowserRouter} from 'react-router-dom'
import MainExport from './components/redirect.jsx';

ReactDOM.render(
    <BrowserRouter>
        <div>
            <MainExport />
        </div>
    </BrowserRouter>, document.getElementById("content")
);

test.html:

<html>
  <head>
    <meta charset="utf-8">
  </head>
  <body>
    <div className="App">
        <div id="content" />
    <div/>
    <script src="dist/bundle/test.bundle.js" type="text/javascript"></script>
  </body>
</html>

Когда я загружаю эту страницу, я ожидаю, что она перенаправит на URL "/ hello" и отобразит страницу с "example.com".

Вместо этого она ничего не делает.

Что я делаю неправильно?

РЕДАКТИРОВАТЬ: Некоторые из ответов были полезны, но ни один из них еще не сработал.

Я обнаружил, что использование компонента Redirect отображает и делает перенаправить, но делает это так, чтобы мой Flask сервер фактически не обслуживал файл. Все, что я вижу, это пустой экран.

Изменение имени на MyRedirect также не помогло.

Использование render вместо component также, похоже, не имело воздействие.

Перенаправление все еще не происходит.

(Я также до сих пор не вижу никаких сообщений об ошибках в консоли JS или на стороне сервера .)

Ответы [ 3 ]

1 голос
/ 02 апреля 2020

Вам не нужно создавать свой собственный компонент Redirect, если вы используете реагирующий маршрутизатор. Они уже сделали один для вас.

Вам просто нужно импортировать его и сделать так, чтобы он был перенаправлен.

import React from 'react'
import { Redirect } from 'react-router-dom'

export default () => <Redirect to="/hello" />
0 голосов
/ 03 апреля 2020

Похоже, мне вообще не нужно использовать React: для перенаправления я могу использовать обычный javascript и просто сделать window.location.href = "example.com"

0 голосов
/ 02 апреля 2020

обо всем по порядку. Маршрутизатор обрабатывает маршруты, как следует из названия, xD DDD, но с указанием в областях, если пользователь собирается выйти из области приложения. Добавьте теги привязки в кнопку, которую пользователь собирается щелкнуть.

Примечание: они должны быть тегами «a» для тех a, которые нацелены на переадресацию ссылки на доменные ссылки, которые не будут работать. Но если вы все еще хотите увидеть, что в браузере RouterRouter вместо компонента

<Route path=“the-path” render={()=>window.location-and-stuff} />
вместо компонента *1003* используется компонент «Маршрут».
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...