25
loading...
This website collects cookies to deliver better user experience
npx create-next-app
next-supabase
for this one.npm run dev
http://localhost:3000
.npm install @supabase/supabase-js
.env.local
file in the root of your project and add these two values you got from Supabase.NEXT_PUBLIC_SUPABASE_URL=YOUR_SUPABASE_URL
NEXT_PUBLIC_SUPABASE_ANON_KEY=YOUR_SUPABASE_ANON_KEY
lib
. And inside this, create an initSupabase.js
file.import { createClient } from '@supabase/supabase-js'
const supabaseUrl = process.env.NEXT_PUBLIC_SUPABASE_URL
const supabaseAnonKey = process.env.NEXT_PUBLIC_SUPABASE_ANON_KEY
export const supabase = createClient(supabaseUrl, supabaseAnonKey)
pages/index.js
file and replace its contents with the following.import Head from 'next/head';
import Image from 'next/image';
import CountryList from '../components/countryList';
export default function Home() {
return (
<main>
<CountryList />
</main>
);
}
CountryList
component does not exist yet, so let's create a components
folder and inside create the CountryList.js
file.export default function CountryList() {
return (
<ul>
<li>Country</li>
</ul>
);
}
import { useEffect, useState } from 'react';
import { supabase } from '../lib/initSupabase';
const [countries, setCountries] = useState([]);
const fetchCountries = async () => {
const { data: countries } = await supabase
.from('countries')
.select('*')
.order('name', true);
setCountries(countries);
};
useEffect
hook.useEffect(() => {
fetchCountries();
}, []);
return (
<ul>
{countries.map((country) => (
<li key={country.id}>{country.name}</li>
))}
</ul>
);