Prisma ORM 现在为 React Native 和 Expo 提供抢先体验支持,满足了社区的热门请求。该集成引入了响应式查询,使用 React hooks 在底层数据更改时自动更新 UI。
Prisma ORM 是在后端 JavaScript 应用程序中使用数据库的首选方式。这归功于其出色的类型安全、简易的迁移系统以及与您最喜欢的 IDE 的紧密集成。
我们在 2019 年收到了第一个支持 React Native 的请求,从那时起,该问题已获得 300 多个赞。我们一直希望 Prisma 能够为本地应用程序(包括移动、Web 和桌面)的数据提供支持,因此社区的这种兴趣对我们来说是有意义的。但我们也知道,将 Prisma ORM 移植到移动端是不够的。应用程序与 Web 服务器不同,为了提供出色的 DX,我们需要构建额外的功能,以便与底层平台紧密集成。这就是我们一直在做的事情,今天,我们很高兴地宣布 Prisma ORM for React Native 和 Expo 的抢先体验版 🎉
我们与 Expo 合作,以确保在 Expo 管理的应用程序中易于使用,并且 readme 文件包含在非 Expo 管理的 React Native 应用程序中设置 Prisma ORM 的文档。
响应式查询
除了完整的 Prisma ORM API 之外,我们还引入了一组新的查询函数,这些函数与 React 的 hook 机制集成,以便在底层数据更改时自动更新您的 UI。我们称这些为响应式查询,它的工作原理如下
在此组件中,我们在顶部声明数据依赖项。我们没有使用 Prisma ORM 的普通 findMany()
查询函数,而是使用新的 useFindMany()
查询函数,该函数直接与 React 的 useState()
和 useEffect()
机制集成,以便在底层数据更改时重新渲染组件。
此行最初返回一个空数组,然后在从本地数据库获取事务列表后立即重新渲染组件
React 中的 hooks 通常是独立的函数 - 例如
useFindManyTransactions()
。为了符合常规 Prisma ORM API,我们选择了另一种格式prisma.transactions.useFindMany()
。在此抢先体验期间,我们正在征求对此决定的反馈。请在 Discord 上分享您的想法。
在 LongPress
处理程序中,数据库行被删除,自动触发组件的重新渲染。重要的是要注意,数据更改可能发生在应用程序的任何位置,并且它将触发依赖于该数据的任何活动组件的重新渲染。
通过利用响应式查询,可以重构许多应用程序,以消除脆弱的手动状态管理,转而采用简单的自动化响应式模型。
今天在您的 Expo 应用程序中使用 Prisma ORM
Prisma ORM 今天即可在您的 Expo 和 React Native 应用程序中使用。请记住,这是一个抢先体验版本,因此请帮助我们对其进行测试,并在 Discord 上与我们分享您的体验。要开始使用,请按照 readme 中的说明进行操作。
本地优先实验
我们设计了响应式查询系统,以便将来直接与完全集成的同步服务一起使用。这将使您能够编写使用本地数据的应用程序,以获得最佳用户体验,同时在后台自动同步,从而实现强大的体验,例如实时协作、状态指示和数据共享。我们尚未准备好讨论此事,但您可以在 GitHub 存储库中查看此概念的实验性实现。
不要错过下一篇文章!
注册 Prisma 新闻通讯