我正在尝试将我的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中使用浏览器历史记录?这就是我的猜测。我仍然很困惑。
答案 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将自动承担路由和浏览器历史记录的费用。除非您对其进行自定义。