Prisma ORM 現在為 React Native 和 Expo 提供搶先體驗支援,滿足了社群的熱門要求。此整合引入了反應式查詢,使用 React Hooks 在底層資料變更時自動更新 UI。
Prisma ORM 是後端 JavaScript 應用程式中處理資料庫的首選方式。這歸功於其出色的型別安全、簡易的遷移系統以及與您最愛的 IDE 的緊密整合。
我們早在 2019 年就收到了第一個支援 React Native 的請求,從那時起,這個問題已獲得超過 300 個贊。我們一直希望 Prisma 能夠為本機應用程式(包括行動裝置、網路和桌面應用程式)的資料提供動力,因此社群的這種興趣對我們來說是有道理的。但我們也知道,將 Prisma ORM 移植到行動裝置是不夠的。應用程式與網路伺服器不同,為了提供卓越的 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 中的 Hook 習慣上是獨立的函式,例如
useFindManyTransactions()
。為了符合常規的 Prisma ORM API,我們選擇了替代格式prisma.transactions.useFindMany()
。在搶先體驗期間,我們正在徵求對此決策的回饋。請在 Discord 上分享您的想法。
在 LongPress
處理常式中,資料庫列被刪除,自動觸發元件的重新渲染。重要的是要注意,資料變更可能發生在應用程式中的任何位置,並且它將觸發依賴於該資料的任何活動元件的重新渲染。
透過利用反應式查詢,可以重構許多應用程式,以移除脆弱且手動的狀態管理,轉而採用簡單的自動化反應模型。
今天在您的 Expo 應用程式中使用 Prisma ORM
Prisma ORM 今天即可在您的 Expo 和 React Native 應用程式中使用。請記住,這是搶先體驗版本,因此請協助我們測試並在 Discord 上與我們分享您的體驗。若要開始使用,請依照 readme 中的指示操作。
本機優先的實驗
我們設計了反應式查詢系統,以便將來直接與完全整合的同步服務搭配使用。這將使您能夠編寫使用本機資料的應用程式,以獲得最佳使用者體驗,同時在背景自動同步,以實現強大的體驗,例如即時協作、狀態指示和資料共享。我們尚未準備好談論這個,但您可以查看 GitHub repo 中此概念的實驗性實作。
不要錯過下一篇文章!
訂閱 Prisma 電子報