在反应中处理多个帐户

Posted

技术标签:

【中文标题】在反应中处理多个帐户【英文标题】:Handle multiple accounts in react 【发布时间】:2021-12-18 07:55:51 【问题描述】:

我正在开发一个 react JS 网络应用程序,它允许用户一次登录多个帐户。这将类似于 Google 允许您使用多个帐户登录的方式。

我的问题是跟踪每个标签中使用的用户的最佳方式是什么?如果用户单击带有“在新标签页中打开”的链接,我将如何确保正在使用的当前帐户被传递到新标签页?

【问题讨论】:

你不能只使用会话存储吗? 我正在查看,但问题是我需要在使用链接时从一个页面传递到另一个页面的内容,但如果打开新选项卡则不存在。我不认为会话存储可以做到这一点。 【参考方案1】:

查看 google 如何在链接中包含用户 - u/0u/1u/2。这可能会让你走上正确的道路。我会这样做,然后从 URL 中获取该参数,然后根据需要使用会话存储或 cookie。


评论讨论后编辑

我为您创建了一个代码沙箱,以了解如何使用 react-router-dom 实现这一目标。

https://codesandbox.io/s/small-platform-jlwpg

浏览一下,一些值得注意的项目是:

    使用userId 参数嵌套路由器:
<Routes>
  <Route exact path="/" element=<Home /> />
  <Route path="/about" element=<About /> />
  <Route exact path="/mail" element=<Mail />>
    <Route path=":userId" element=<Mailbox /> />
  </Route>
</Routes>

    &lt;Outlet/&gt;Mail.jsx 中的使用。没有这个,Mail 将不会呈现该子路由。

    Mailbox.jsxuseParams钩子的使用

const  userId  = useParams();

【讨论】:

我看到了,并且还在考虑可以将 /:ID/ 作为我所有路线的根。但不确定这是否是最好的方法。 是的,google auth 系统非常复杂,但是在玩了足够多的 firebase auth 之后,我相信它或多或少都在遵循这个原则 到目前为止,我找不到任何建议如何创建“/:id/”根路由和所有其余路由作为子路由的信息。反应路由器甚至会这样做吗?知道去哪里看吗? 我已经使用代码沙箱更新了答案,以帮助您使用子路由设置 react-router-dom。 查看了您的沙箱,但它似乎没有解决 ID 下面的子路由。例如,在 Google Drive 上,您可能会看到“drive.google.com/u/1/folder/filename”。我能够弄清楚如何将 ID 作为最终项目,但我似乎无法弄清楚该 ID 包含在其下方的其他路线的路线中。

以上是关于在反应中处理多个帐户的主要内容,如果未能解决你的问题,请参考以下文章

具有 Activemerchant gem 的多个商家帐户

在 Firestore 和 Firebase Auth 中处理用户数据的最佳方式配置为允许每封电子邮件有多个帐户

为每个应用用户使用多个 redux 存储

多个网站 - 一个网站付款专业帐户?

将多个域组添加到本地管理员帐户、验证添加和更改输出颜色的批处理文件

在solidity合约实例承诺中反应setState