An Interest In:
Web News this Week
- April 24, 2024
- April 23, 2024
- April 22, 2024
- April 21, 2024
- April 20, 2024
- April 19, 2024
- April 18, 2024
July 6, 2021 06:09 pm GMT
Original Link: https://dev.to/yobretyo/fetching-a-api-vs-using-contextprovider-when-should-you-use-just-fetching-vs-a-contextprovider-12cg
Fetching a API, vs using ContextProvider. When should you use just fetching vs a ContextProvider??
Im using Next for the first time and Im liking it,
There is a choice tho of when do i need a ContextProvider?
In my Next project i have several files to get data from Airtable:
In Airtable.js
const Airtable = require('airtable');const base = new Airtable({ apiKey: process.env.AIRTABLE_API_KEY }).base(process.env.AIRTABLE_BASE_ID);const table = base(process.env.AIRTABLE_TABLE_NAME);const table2 = base(process.env.AIRTABLE_TABLE_NAME2);const table3 = base(process.env.AIRTABLE_TABLE_NAME3);const minifyRecords = (records) => { return records.map(record => getMinifiedRecord(record));}const getMinifiedRecord = (record) => { if(!record.fields.completed) { record.fields.completed = false; } return { id: record.id, fields: record.fields, }}export { table, table2, table3, getMinifiedRecord, minifyRecords}
Then in my getCorals.js i have:
import { table, minifyRecords } from './utils/Airtable'export default async (req, res) => { try{ const records = await table.select({}).firstPage(); const minifiedRecords = minifyRecords(records); res.statusCode = 200; res.json(minifiedRecords); //console.log(records) }catch(err){ res.statusCode = 500; res.json({msg: 'something went wrong'})}}
The in my actual page to show my data i have:
import React from 'react'import { CoralProvider } from '../contexts/CoralContext'import { table, minifyRecords } from '../pages/api/utils/Airtable'// im at video 6 in Airtable Nextjs video series....ITS WORKING!!!export default function Coral({initialCoral}) { // console log initialCoral... it logs them out //console.log(initialCoral); try{ return ( <CoralProvider> <h1>ZOAS PAGE</h1> </CoralProvider> ) }catch(err){ console.log(err); return{ props: { err: "something went wrong" } } }}export async function getServerSideProps(context) { const coral = await table.select({}).firstPage(); return { props: { InitCoral: minifyRecords(coral) } }}
OOOOOOOORRRRRR
Do i just fetch my data like this:??????
import React from 'react'import Coralapi from '../../API/Coralapi'import { useEffect, useState } from "react";import Airtable from 'airtable';require('dotenv').config();const base = new Airtable({apiKey: `${process.env.REACT_APP_AIRTABLE_API_KEY}` }).base(`${process.env.REACT_APP_AIRTABLE_BASE_ID}`);function Coralpage() { const [coral, setCoral] = useState([]); const [care, setCare] = useState([]); useEffect(() => { base("CORAL") .select({view: "Gallery" }) .eachPage((records, fetchNextPage) => { console.log(records); setCoral(records); fetchNextPage(); }); base("CARE") .select({view: "Gallery" }) .eachPage((records, fetchNextPage) => { console.log(records); setCare(records); fetchNextPage(); });},[]);return ( <> <h1>Coral Products</h1> {coral.map((coral) => ( <Coralapi key={coral.id} coral={coral} care={care.filter( (care) => care.coral )} /> ))} </>);}export default Coralpage
IM NOT TOO SURE ON WHAT TO USE???
Original Link: https://dev.to/yobretyo/fetching-a-api-vs-using-contextprovider-when-should-you-use-just-fetching-vs-a-contextprovider-12cg
Share this article:
Tweet
View Full Article
Dev To
An online community for sharing and discovering great ideas, having debates, and making friendsMore About this Source Visit Dev To