==== PS Я нашел решение и написал в комментариях.
Я хочу создать форму и показать ответ своего сервера в другом домене после перенаправления. Запрос отправляется из /, и сервер обрабатывает запрос, затем браузер видит ответ от сервера в / result domain.
Условно, это очень просто. Это записывается как
==== index.html ====
<form action="/result" method="POST">
<input type="text" placeholder="Your Name" />
<input type="submit" />
</form>
Есть и другие примеры, такие как: https://www.w3schools.com/html/tryit.asp?filename=tryhtml_form_post
Я хочу написать код React, как описано выше, однако у меня возникают трудности с историей браузера и перенаправлением с помощью параметров. Моя реакция выглядит ниже. Он не передает отправленный браузером ответ на домен / result.
==== App.js ====
function App() {
return (
<BrowserRouter>
<div>
<Switch>
<Route exact path="/">
<Home />
</Route>
<Route path="/result">
<Result />
</Route>
</Switch>
</div>
</BrowserRouter>
);
}
function Home() {
const [submitted, setSubmitted] = useState(false);
const [content, setContent] = useState("");
const history = useHistory();
const handleSubmit = (event) => {
event.preventDefault()
fetch('https://api.example.com')
.then(response => response.json())
setSubmitted(true);
history.push("/"); // because Redirect override history, this line enables browser back button (I guess there should be a smarter way)
}
if (submitted) {
return <Redirect to='/result' /> // I want to pass fetched API response to /result
}
return (
<div>
<h1>Send content to server</h1>
<form onSubmit={handleSubmit}>
<label>
Content:
<input name="content" type="text" {...bindContent} />
</label>
<input type="submit" value="Submit" />
</form>
</div>
);
}
function Result(response) {
return <h2>Browser received {response}</h2>
}