Unofficial React SDK (React, React Native, Expo) for interacting with the PocketBase JS SDK.
# Using npm
npm install pocketbase-react --save
#Using yarn
yarn add pocketbase-reactimport{Pocketbase}from'pocketbase-react';🔧 React Native / Expo doesn't have native
EventSourceimplementation, so in order to use the realtime service you'll need to load aEventSourcepolyfill. I recommend EventSource/eventsource# Using npm npm install eventsource --save # Using yarn yarn add eventsource// EventSource.tsvarSource=require('event-source');global.EventSource=Source;
// App.tsximport{Pocketbase}from'pocketbase-react';constserverURL="YOUR_SERVER_URL"constcollections=['COLLECTION_NAME_01','COLLECTION_NAME_02']constwebRedirectURL="http://..."constmobileRedirectURL="expo://..."// for example<PocketbaseserverURL={serverURL}initialCollections={collections}webRedirectURL={webRedirectURL}mobileRedirectURL={mobileRedirectURL}openURL={async(url)=>{// for example expo WebBrowserawaitWebBrowser.openBrowserAsync(url);}}><APP/></Pocketbase>import{useAppContent,useAuth}from'pocketbase-react';Reading the records value directly accesses the Redux Store.
The value will be changed automatically by the following actions:
Without Initial Fetch
// Corresponds to the stored Redux value, simply reads without making further PocketBase requestsconst{ records }=useAppContent('COLLECTION_NAME_01');// When initializing, the desired table is queried once and updated in Redux, records corresponds to the stored Redux valueconst{ records }=useAppContent('COLLECTION_NAME_01',true);const{ actions }=useAppContent('COLLECTION_NAME_01');All following actions are performed on the desired table, in this case -> COLLECTION_NAME_01
⚠️ All actions will not return anything, they will just modify the Redux value according to their intention
actions.subscribe();Unsubscribe
actions.unsubscribe();actions.refetch();Create
constobject={};actions.create(object);Update
constid='SOME_ID';constobject={};actions.update(id,object);DELETE
constid='SOME_ID';actions.delete(id);const{ actions }=useAuth();awaitactions.registerWithEmail(email: string,password: string);Sign-In with Email
awaitactions.signInWithEmail(email: string,password: string);Sign-In with Provider
awaitactions.signInWithProvider(provider: string);Submit Provider Result
awaitactions.submitProviderResult(url: string);Sign-Out
actions.signOut();Send password reset email
awaitactions.sendPasswordResetEmail(email: string);Send email verification
awaitactions.sendEmailVerification(email: string);Update profile
awaitactions.updateProfile(id: string,record: {});Update profile
awaitactions.updateEmail(email: string);Delete user
awaitactions.deleteUser(id: string);