Отреагируйте и введите сценарий createContext исходные данные для функций

# #reactjs #typescript #firebase #react-hooks #react-context

Вопрос:

У меня есть контекст, который используется для создания, обновления, перечисления и удаления набора данных.

Он создается следующим образом со следующими типами, которые должны быть возвращены.

 type TDataContext = {
    loading: boolean,
    getDataList: () => TData[],
    addNewData : (data: TData) => Promise<boolean> ,
    editData: (dataId: string, data: TData) => Promise<boolean>, 
    deleteData: (dataId: string) => Promise<boolean>, 
}

const ADataContext = createContext<TGymClientDataContext>({
    // How to initialize these here ?
})

export const ADataProvider: FC<{}> = ({children}) => {

    const [loading, setLoading] = useState(true)
    const [snapshot, loading, error] = useCollection<TDataStore>(db.collection(FIRESTORE_COLLECTIONS.DATA_COLLECTION), {});

    const getDataList = async (): TData[] => {
        if(loading == true) {
            return []
        }
        if(typeof snapshot == "undefined"){
            return []
        }
        return snapshot?.docs.map((item) => {
            const fetched = item.data();
    
            return ({
                id: item.id,
                doj: fetched.doj.toDate(),
                firstName: fetched.firstName,
                lastName: fetched.lastName,
            })
    
        })
    } 

    //    ... Function definitions

    
    const values = {
        loading,
        getDataList,
        addNewData,
        editData,
        deleteData,
    }

    return <ADataContext.Provider value={values}>
        {children}
    </ADataContext.Provider>

}


export const useDataHook = () => useContext(ADataContext)
 
  1. Я хотел бы знать, каков будет наилучший возможный способ передачи исходных данных в createContext ?

Я создаю это со следующим ожидаемым использованием

 const {loading, getClientList, editClientData, addNewClient, deleteClientData} = useGymClient()

 

Ожидается, что функции просто вернут значение true или false в зависимости от того, будут ли операции успешными или нет.

Другой вопрос, что,

  1. Данные всегда должны быть перехвачены с помощью функции getDataList. является ли прямая передача переменной моментального снимка лучшим подходом ? В таком случае, что будет лучшим инициализатором для контекста создания