使用 wmr / preact-iso 以编程方式路由?

Programmatically route with wmr / preact-iso?

我一直在玩 wmr and preact-iso 并且来自 preact-cli、preact-router 等,我对如何做我以前能做的一些事情有点困惑.

恰当的例子:preact-router 的 route() 功能似乎在 preact-iso 的路由器包中丢失。

我如何从代码路由?

我以前可以这样做:

import { route } from 'preact-router';

// Send the user to /path
route('/path');

那么我如何使用 WMR / preact-iso 做到这一点?

并且有点相关:有什么方法可以将 <Link /> 组件与 preact-iso 一起使用?

route() 存在于 useLocation 挂钩上。

import { useLocation } from 'preact-iso';

const location = useLocation();

location.route('/error');

编辑:错过了关于 <Link> 的问题。您可以自己创建,我们不提供等效产品。它只是锚标记的浅层包装。

这是一个非常直接的副本:

function Link({
    class: c,
    className,
    activeClass,
    activeClassName,
    ...props
}) {
    const inactive = [c, className].filter(Boolean).join(' ');
    const active = [c, className, activeClass, activeClassName].filter(Boolean).join(' ');
    const matches = useLocation().url === props.href;

    return <a { ...props } class={matches ? active : inactive} />;
}