@supabase-kit/react
Version:
> Hooks by management data from supabase and fetch data by react.
164 lines (118 loc) • 3.48 kB
Markdown
# get start
> Hooks by management data from supabase and fetch data by react.
## install
```bash
npm i -kit/react
```
```bash
bun add -kit/react
```
```bash
pnpm add -kit/react
```
```bash
yarn add -kit/react
```
## create tools
```typescript
import { createSupabaseTools } from '@supabase-kit/react';
import { createClient } from '@supabase/supabase-js';
import { Database } from '@/supabase/types'
const supabaseUrl = '';
const supabaseKey = '';
export const supabase = createClient<Database>(supabaseUrl, supabaseKey);
export const {
// query parsser object to client
QueryBuilder,
// hooks
useSupabase,
useSupaQuery,
useSupaSession,
useSupaRealtime,
useSupaSubscription,
useSupaInfiniteQuery,
} = createSupabaseTools(supabase);
```
### useSupabase: return supabase client
```typescript
'use client';
import React from 'react';
import { useSupabase } from '@/createSupabaseTools';
export const Example = () => {
const supabase = useSupabase();
return <div>{urls.panel.root}</div>;
};
```
### useSupaQuery: query by fetch data
- table — The name of the table to query.
- column — Columns to select from the table.
- count — Count type for the query.
- options — Additional options for the query hook from /react-query.
- single — Flag indicating if a single row should be returned.
- enabled — Flag to enable/disable the query execution.
- where — condition by where how in, is, eq, neq, filter, etc.
```typescript
'use client';
import { useSupabase } from '@/createSupabaseTools';
export const Example = () => {
const book = useSupaQuery({
table: 'book',
where: {
eq: { id: 1 },
}
});
return <div>{JSON.stringify(book.data)}</div>;
};
```
### useSupaRealtime: query by fetch data in realtime
- table — The table to listen to.
- where — A filter to apply to the subscription.
- channel — The channel to subscribe to.
```typescript
'use client';
import { useSupaRealtime } from '@/createSupabaseTools';
export const Example = () => {
const book = useSupaRealtime({
table: 'book',
where: {
key: 'id',
operator: 'in',
value: [1, 2, 5],
},
});
return <div>{JSON.stringify(book.data)}</div>;
};
```
### useSupaSubscription: query by fetch data in realtime with customn
- table — The name of the table to subscribe to.
- schema — The database schema to use.
- event — Event type to listen for (e.g., INSERT, UPDATE, DELETE).
- where — Filter object to specify conditions for events.
- type — Type of event to listen for.
- channel — Channel name for the subscription.
- callback — Callback function to handle subscription payloads.
```typescript
'use client';
import { useState } from 'react';
import { useSupaSubscription } from '@/createSupabaseTools';
export const Example = () => {
const [subscription, setSubscription] = useState({});
useSupaSubscription({
event: '*',
table: 'book',
schema: 'public',
channel: 'general',
type: 'postgres_changes',
callback(payload) {
console.log(payload);
setSubscription(payload);
},
where: {
key: 'id',
operator: 'in',
value: [1, 2, 5],
},
});
return <div>{JSON.stringify(subscription)}</div>;
};
```