微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

从“下一个/路由器”导入路由器可以吗?

如何解决从“下一个/路由器”导入路由器可以吗?

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中,它将起作用...但是那很麻烦,将来您可能会遇到问题。

useEffectuseRouter都是Next.js解决此问题的方法。它们都是构建好的,因此可以与SSR和CSR一起使用。所以我的建议是只使用其中之一,它们效果很好。

,

您在什么情况下使用示例而不是Next.js在其文档中使用的示例?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。