import * as React from "react";
import * as express from "express";
import { renderToString } from "react-dom/server";
import {
Router,
Route,
Link,
Switch,
Redirect,
useRouter,
useRoute,
Path,
Params
} from "wouter";
import useLocation from "wouter/use-location";
import staticLocationHook = require("wouter/static-location");
const Inbox = () =>
Inbox
;
const BaseTest = () => (
Profile
About Us
console.log("navigated to /inbox")}>
Inbox
About Us
{params => Hello, {params && params.name}!
}
);
;
const UseRouterTest = () => {
const { hook, matcher } = useRouter();
const [path, push] = hook();
const [match, params] = matcher("/users/:name", path);
if (!match) return null;
return (
Your name is {params && params.name}
push("/orders")}>Orders
);
};
const UseRouteTest = () => {
const [match, params] = useRoute("/users/:name");
if (!match) return null;
return Welcome, {params && params.name}!
;
};
const useLocationTest = () => {
const [location, setLocation] = useLocation();
return (
Current location: {location}
setLocation("/home")}>Home
);
};
/* staticLocationHook Test */
const app = express();
app.get("*", (req, res) => {
const html = renderToString(
A
B
);
res.status(200).send(html);
});
/* customMatcher Test */
const customMatcher = (pattern: string, path: Path): [boolean, Params] => {
const reversed = path
.replace(/^\//, "")
.split("")
.reverse()
.join("");
return [pattern.replace(/^\//, "") === reversed, {}];
};
const customMatcherTest = () => (
A
);