Your Web News in One Place

Help Webnuz

Referal links:

Sign up for GreenGeeks web hosting
July 6, 2021 06:09 pm GMT

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:    Share on Facebook
View Full Article

Dev To

An online community for sharing and discovering great ideas, having debates, and making friends

More About this Source Visit Dev To