如何在不使用全局存储的情况下将类对象从一个屏幕传递到另一个屏幕

Posted

技术标签:

【中文标题】如何在不使用全局存储的情况下将类对象从一个屏幕传递到另一个屏幕【英文标题】:How to pass class object from one screen to another without using global store in react native 【发布时间】:2021-12-30 01:54:51 【问题描述】:

我正在使用 Amazon Cognito 开发工具包,在实施登录流程时收到以下警告

Non-serializable values were found in the navigation state

登录流程由两个屏幕组成

    用户将在其中输入其注册电子邮件 ID 的登录屏幕 用户填写通过电子邮件收到的 OTP 的 OTP 屏幕

当我将 Cognito 用户(来自 Cognito SDK 的类对象)从登录屏幕传递到 OTP 屏幕时,会出现上述警告,该对象需要从登录屏幕传递到 OTP 屏幕,因为sendCustomChallengeAnswer 需要该用户对象才能按顺序验证用户输入的 OTP。

虽然 react-navigation 库建议使用全局存储将复杂数据从一个屏幕传递到另一个屏幕,但我没有使用任何状态管理库,例如 redux。

有没有其他方法可以将这些对象从一个屏幕传递到另一个屏幕?

【问题讨论】:

你现在如何在你的代码中传递它?你的Linking Options 是什么样的? 我只是简单地将导航函数中的对象作为普通参数传递,因此我收到了警告 啊,好的,我现在明白了。是的,除了Context,我想我没有其他想法。对不起 【参考方案1】:

您可以使用 Context (https://reactjs.org/docs/context.html) 将信息存储在组件的根目录

【讨论】:

以上是关于如何在不使用全局存储的情况下将类对象从一个屏幕传递到另一个屏幕的主要内容,如果未能解决你的问题,请参考以下文章