使用Redux时,Next.js是否不需要浏览器历史记录?
我正在尝试将我的使用Redux时,Next.js是否不需要浏览器历史记录?,next.js,Next.js,我正在尝试将我的React应用程序迁移到Next.js。我一直在export const history=createBrowserHistory()中出现以下错误 不变冲突:浏览器历史记录需要DOM configureStore.js import { createStore, combineReducers, compose, applyMiddleware } from "redux"; import { connectRouter, routerMiddleware } from "co
React
应用程序迁移到Next.js
。我一直在export const history=createBrowserHistory()中出现以下错误我的configureStore.js
中的code>
不变冲突:浏览器历史记录需要DOM
configureStore.js
import { createStore, combineReducers, compose, applyMiddleware } from "redux";
import { connectRouter, routerMiddleware } from "connected-react-router";
import { createBrowserHistory } from "history";
import thunk from "redux-thunk";
import user from "./modules/user";
import stores from "./modules/stores";
import info from "./modules/info";
export const history = createBrowserHistory();
const middlewares = [thunk, routerMiddleware(history)];
const reducer = combineReducers({
user,
stores,
info,
router: connectRouter(history)
});
export default function configureStore(preloadedState) {
return createStore(
reducer,
preloadedState,
compose(
applyMiddleware(
...middlewares
)
)
);
}
我发现,在迁移到Next.js时,有许多事情需要更改,因为Next是一个框架,它需要自己的代码体系结构以及SSR和CSR之间的差异。当我学习Next.js教程时,有一个路由部分说路由是基于CSR或SSR区分的。这是否意味着我不能在Next.js中使用浏览器历史记录?这就是我的猜测。我还是很困惑。你说得对。SSR和CSR之间存在差异。Next.js使用Next Router进行CSR路由,如果您需要自定义SSR,那么您应该向express
等框架寻求帮助
通过执行CSR,nextjs将记住浏览器历史记录,后退按钮将按预期工作。但是,如果需要将路线更改为非常不同的路线,可以使用以下任一解决方案:
import Router from 'next/router';
...
Router .push('/about');
或
迁移需要一些时间,您需要记住next.js将自动接管路由和浏览器历史记录的费用。除非你定制它。你是对的。SSR和CSR之间存在差异。Next.js使用Next Router进行CSR路由,如果您需要自定义SSR,那么您应该向express
等框架寻求帮助
通过执行CSR,nextjs将记住浏览器历史记录,后退按钮将按预期工作。但是,如果需要将路线更改为非常不同的路线,可以使用以下任一解决方案:
import Router from 'next/router';
...
Router .push('/about');
或
迁移需要一些时间,您需要记住next.js将自动接管路由和浏览器历史记录的费用。除非您对其进行自定义。那么,我是否应该删除所有有关CSR路由的代码,例如ConnectedRouter
和createBrowserHistory
?是的。您应该删除它们,并在下一步考虑它们。谢谢您的澄清!那么,我是否应该删除关于CSR路由的所有代码,例如ConnectedRouter
和createBrowserHistory
?是的。您应该删除它们,并在下一步考虑它们。谢谢您的澄清!
Router.beforePopState(({ url, as, options }) => {...}