MENU
<StaticRouter>
RESETRUNFULL
// App.jsimport React from "react";import {Switch, Route, Redirect} from "react-router-dom";function About(){
return <h1>About</h1>;}function Dashboard(){
return <h1>Dashboard</h1>;}function RedirectWithStatus({ from, to, status }) {
return (
<Route
render={({ staticContext }) => {
if (staticContext) staticContext.status = status;
return <Redirect from={from} to={to} />;
}}
/>
);}function Status({ code, children }) {
return (
<Route
render={({ staticContext }) => {
if (staticContext) staticContext.status = code;
return children;
}} />);}function NotFound() {
return (
<Status code={404}>
<div>
<h1>Sorry, can't find that.</h1>
</div>
</Status>
);}export default function App() {
return (
<Switch>
<Route path="/about" component={About} />
<Route path="/dashboard" component={Dashboard} />
<RedirectWithStatus status={301} from="/users" to="/profiles" />
<RedirectWithStatus status={302} from="/courses" to="/dashboard" />
<Route component={NotFound} />
</Switch>
);}
// server.jsimport http from "http";import React from "react";import ReactDOMServer from "react-dom/server";import { StaticRouter } from "react-router-dom";import App from "./App.js";http.createServer((req, res) => {
const context = {};
const html = ReactDOMServer.renderToString(
<StaticRouter location={req.url} context={context}>
<App />
</StaticRouter>
);
if (context.url) {
res.writeHead(301, {Location: context.url});
res.end();
} else {
res.write(`
<!doctype html>
<div id="app">${html}</div>
`);
res.end();
}}).listen(3000);