10

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

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

4

1 回答 1

22

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