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

Posted

技术标签:

【中文标题】在 nextjs 中,对象类型从服务器更改为客户端【英文标题】:Object type changed from server to client side in nextjs 【发布时间】:2019-11-26 04:13:09 【问题描述】:

在我的 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】:

getInitialProps对其返回的数据进行序列化,函数无法序列化。

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

一旦实例作为组件出现在组件上,您就需要对其进行重构。

【讨论】:

以上是关于在 nextjs 中,对象类型从服务器更改为客户端的主要内容,如果未能解决你的问题,请参考以下文章

在熊猫中将数据类型从对象更改为字符串

系统日志里Background Intelligent Transfer Service服务的启动类型从按需启动更改为自动启动 是中毒了吗

MongoDB如何将数组中的字段类型从字符串更改为数组并保持原始值

通过 Cloud Functions 返回后,Web Firebase var 从时间戳类型更改为对象类型

nextjs如何监听页面变化

将猫鼬列从对象更改为 ObjectId