如何解决从“下一个/路由器”导入路由器可以吗?
Next.js文档提到了两种访问router
对象的方法:useRouter
用于功能性组件,withRouter
用于基于类的组件。
但是,它没有提及我几次遇到的东西,例如,按以下方式访问的Router
对象,例如:
import Router from 'next/router'
Router.push("/")
以这种方式使用Router
是否正确?为什么Next.js文档没有提及?
解决方法
我猜主要建议不直接从对象本身直接使用Router.push()或Router.pathname是因为Next.js为应用程序提供服务的方式。当您尝试这样做时:
create or replace temporary table stacko_64351844 (
id number,status varchar(20),ts varchar(20),desired number);
INSERT INTO stacko_64351844
VALUES
(1,'Off','0345',0),(1,'Charge','0400',1),'0415','0430','0445',2),'0500','0515',3),'0530','0545','0600','0615',0);
SELECT id,status,ts,desired,NVL(calc_desired,max(calc_desired) over (partition by id order by id,ts rows between unbounded preceding and current row)) as calc_desired
FROM (
SELECT id,tmp_desired,CASE
WHEN status = 'Off' THEN 0
WHEN (status != 'Charge' AND status = lag(status,1,null)
over (partition by id order by id,status DESC) )
THEN null
ELSE
sum(tmp_desired) over (partition by id,tmp_desired order by id,ts rows between unbounded preceding and current row)
end as calc_desired
FROM (
SELECT id,CASE
WHEN status = 'Off' THEN 0
WHEN status = lag(status,null)
over (partition by id order by id,status DESC)
THEN null
ELSE
1
end as tmp_desired
FROM stacko_64351844)
ORDER BY id,status DESC);
RESULTS
ID STATUS TS DESIRED CALC_DESIRED
1 Off 0345 0 0
1 Charge 0400 1 1
1 Charge 0415 1 1
1 Off 0430 0 0
1 Charge 0445 2 2
1 Off 0500 0 0
1 Charge 0515 3 3
1 Charge 0530 3 3
1 Charge 0545 3 3
1 Charge 0600 3 3
1 Off 0615 0 0
您将收到以下错误:import Router from 'next/router';
const HomePage = () => {
console.log(Router.pathname);
return (
<div>hi</div>
)
}
。这是因为next / router与SSR配合使用的方式。
不过,您可以将其放在You should only use "next/router" inside the client side of your app
中,它将起作用...但是那很麻烦,将来您可能会遇到问题。
useEffect
和useRouter
都是Next.js解决此问题的方法。它们都是构建好的,因此可以与SSR和CSR一起使用。所以我的建议是只使用其中之一,它们效果很好。
您在什么情况下使用示例而不是Next.js在其文档中使用的示例?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。