1.1.3 • Published 3 years ago

@buuhv/react-context-api v1.1.3

Weekly downloads
119
License
MIT
Repository
github
Last release
3 years ago

@buuhv/react-context-api

Creating a Context API has never been easier than it is now. You no longer need to use Redux or Create a new structure for each project. Using react-context-api you can create your structure in seconds. Thanks to react-context-api you no longer need to declare a huge object for the return of your data from the reducer, react-context-api does it for you.

Getting started

npm install @buuhv/react-context-api --save

Usage

Creating interfaces

import { UseReducer, ActionProvider } from "@buuhv/react-context-api";

export interface SystemProvider {
    logged: boolean
}
export interface ContextsProps {
    system: SystemProvider
}
export interface Store extends UseReducer {
    store: ContextsProps
}

Creating Providers

import ContextAPI, { ActionProvider } from "@buuhv/react-context-api";
import { SystemProvider } from "../interfaces";

const initial = {
    logged: false
}

const systemProvider = (state = initial, action?: ActionProvider ): SystemProvider => {
    return ContextAPI.providerResult(state, action);
}

export default systemProvider;

Creating Context API

import ContextAPI, { combineReducers } from "@buuhv/react-context-api";
import systemProvider from "./providers/system";
import userProvider from "./providers/user";
import { Store } from "./interfaces";

const reducers = combineReducers({
    system: systemProvider,
    user: userProvider
});
export const contextApi = new ContextAPI(reducers);

/**
 * How to create a useContext
 */
const useContextAPI = (): Store => contextApi.useContext();
/**
 * How to create Provider or Consumer
 */
const Provider = contextApi.Provider;
const Consumer = contextApi.Consumer;

export {
    Provider,
    Consumer,
    useContextAPI
};

Using

import React, { useContext, useEffect, useMemo } from 'react';
import {RouteComponentProps, withRouter} from 'react-router-dom';
import { contextApi, useContextAPI } from './reducers';//check your import path

function HomeScreen(props: RouteComponentProps): JSX.Element {
    const { store, dispatch } = useContextAPI();
    const handleTest = () => {
        dispatch({
            type: 'name',
            data: 'BuuhV',
            reducer: 'user'
        });
      }
    return(
        <div className='h-100 pt-5'>
            {store.user.name}
            <button className='btn btn-primary mt-5' onClick={handleTest}>Test</button>
        </div>
    );
}

export default withRouter(HomeScreen);

Contributors

This module was extracted from ReactJs core. Please reffer to https://github.com/geeknection/react-context-api/contributors for the complete list of contributors.

License

The library is released under the MIT licence. For more information see LICENSE.