Я использую дальше в первый раз, и мне понравится, есть выбор … когда мне нужен «контекстпрововидный»?
В моем следующем проекте у меня есть несколько файлов, чтобы получить данные из погребена:
В 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}
Тогда в моих getcorals.js у меня есть:
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'}) } }
На моей реальной странице отображается мои данные, которые у меня есть:
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 () }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) } } } ZOAS PAGE
ООООООООРРРРРР
Я просто привлечешь мои данные такими: ??????
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 ( <>Coral Products
{coral.map((coral) => (care.coral )} /> ))} ); } export default Coralpage
Я не слишком уверен на том, что использовать ???
Оригинал: «https://dev.to/yobretyo/fetching-a-api-vs-using-contextprovider-when-should-you-use-just-fetching-vs-a-contextprovider-12cg»