使用Redux时Next.js不需要浏览器历史记录吗?

时间:2019-01-20 22:30:02

标签: next.js

我正在尝试将我的public static String getURL(Locator loc){ return "api.openweathermap.org/data/2.5/weather?" + "lat=" + loc.getLatitude() + //The latitude of instance loc "&lon=" + loc.getLongitude() + //The longitude of instance loc "APPID=" + APPID; } 应用迁移到React。我的Next.js中的export const history = createBrowserHistory();不断出现错误。

  

永久违反:浏览器历史记录需要DOM

configureStore.js

configureStore.js

我发现在将React迁移到Next.js时需要做很多事情,因为Next是一个框架,它需要自己的代码架构以及SSR和CSR之间的区别。当我学习Next.js教程时,有一个路由部分说路由是根据CSR或SSR进行区分的。这是否意味着我无法在Next.js中使用浏览器历史记录?这就是我的猜测。我仍然很困惑。

1 个答案:

答案 0 :(得分:2)

你是对的。 SSR和CSR之间有区别。 Next.js使用下一个路由器进行CSR路由,如果需要自定义SSR,则应从express之类的框架中寻求帮助。

通过执行CSR,nextjs将记住浏览器的历史记录,并且后退按钮将按预期工作。但是,如果您需要将路由更改为非常不同的路由,则可以使用以下任何一种解决方案:

import Router from 'next/router';
...
Router .push('/about');

import Link from 'next/link';
...
<Link href="/about"><a>about</a></Link>

,如果需要在路由之前做一些额外的工作,则应该使用:

Router.beforePopState(({ url, as, options }) => {...}

迁移将需要一些时间,您需要记住next.js将自动承担路由和浏览器历史记录的费用。除非您对其进行自定义。