我已经找了很多,找不到答案。在我的SolidJs应用程序中,第二个路由没有在根元素中被读取:
import { Routes, Route, useLocation } from "solid-app-router"
import { useNavigate } from 'solid-app-router';
const Login = lazy(() => import("./pages/login"));
const Operation = lazy(() => import("./pages/operation"));
export default function App() {
const navigate = useNavigate();
const location = useLocation();
onMount(() => {
const token = localStorage.getItem('token');
if (!token && location.pathname !== '/') {
navigate("/", { replace: true });
}
if (token && location.pathname === '/') {
navigate("/operations", { replace: true });
}
});
return (
<Routes>
<Route path='/' component={Login} />
<Route path='/operations' component={Operation} />
</Routes>
)
}
组件操作看起来一切正常,如果我在第一条路由中像下面这样调用这个组件,它会工作:
<Route path='/' component={Operation} />
我为此挣扎了一段时间,并意识到应用程序需要通过<A>
标记来引用Routes
。
如果你看一下文档的这一部分,它提到这些标签包括一个active
类,它似乎是用来告诉应用程序在构建时实际捆绑这个组件,否则默认情况下它不包括。
所以如果你把<A href="/operations">Operations</A>
放在你的主页的某个地方,像导航栏,该页面/组件应该捆绑在部署。
默认情况下,虽然dev
环境中的Routes
中的所有路由都应该工作,所以如果它在dev
环境中不工作,我会检查模块是否被正确解析。
根组件应该被Router
组件包裹。