使用 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} />;
}
我一直在玩 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} />;
}