Next.js 中的条件重定向

IT技术 javascript reactjs server-side-rendering nextjs
2021-04-27 23:24:40

是否可以根据 cookie 值有条件地将用户重定向到另一个 Url?我知道我可以检查服务器上的 cookie,然后重定向。但是如果用户通过Link. (我不能使用 Route.push 因为它在服务器上未定义)有没有办法只在浏览器上使用路由器?

我知道至少有一种方法可以做到这一点:创建简单的button并在onClick处理程序中添加路由器推送和检查 cookie ,但这是一种正确的方法吗?

1个回答

您可以检查用户是否通过服务器或客户端访问了该页面。之后,您可以使用适当的工具有条件地重定向。 getInitialProps函数获取一个ctx对象。您可以像这样检查它是在服务器还是客户端上:

import Router from 'next/router'

export default class Browse extends Component {

    static async getInitialProps (ctx) {
        if (ctx && ctx.req) {
            console.log('server side')
            ctx.res.writeHead(302, {Location: `/`})
            ctx.res.end()
        } else {
            console.log('client side')
            Router.push(`/`)
        }
...