在nextjs中,对象类型从服务器更改为客户端

时间:2019-07-17 10:39:33

标签: reactjs server-side next.js serverside-rendering

在Next.js应用程序中,我正在getInitialProps函数中创建一个对象,并在constructor中检查该对象的实例。但是在客户端运行代码时,它的类类型已更改。

我的班级是

class TestClass {
    constructor(public name: string, public id: number) {
    }
}

getInitialProps函数中,我将返回该类的对象

static async getInitialProps() {

        const test = new TestType('TestUser', 123);
        return test;
}

在构造函数中检查instanceof属性时,它在客户端提供了错误的类型。

constructor(props: AppProps) {
        super(props);    
        console.log('test', props.test instanceof TestClass);
        // true on server side but false on client side.
}

所以我的问题是为什么会发生这种情况,以及如何在客户端也保持正确的对象类型。

1 个答案:

答案 0 :(得分:0)

getInitialProps序列化从中返回的数据,并且功能无法序列化。

在这里提到: https://nextjs.org/docs/api-reference/data-fetching/getInitialProps

一旦实例作为组件上的道具通过,您将需要对其进行重建。