Next.js中的条件重定向

时间:2017-07-14 09:27:22

标签: javascript reactjs ssr nextjs

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

我至少知道一种方法:创建简单的button并添加Router push&检查onClick处理程序中的cookie,但这是一种正确的方法吗?

1 个答案:

答案 0 :(得分:8)

您可以检查用户是否通过服务器或客户端访问了该页面。 之后,您可以使用适当的工具有条件地重定向。 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(`/`)
        }
...