React createContext

Created By: chatGPT

In React, the createContext function is a part of the context API, which allows you to manage state and pass it through the component tree without having to pass it down manually at every level. This is particularly useful for global data that many components need access to, such as user authentication, themes, or any other data that is accessible at various points in your app's hierarchy.
import React, { createContext, useContext, useState } from 'react';
To create a context, you can use the createContext function. This function returns an object with two components: a Provider and a Consumer. The Provider is used to wrap your application or a part of it, and it will hold the state you want to pass down the component tree.
const MyContext = createContext();
You can now define a Provider component. Inside this component, you can use state to manage your data. Here's an example of how to create a simple context with a value and a function to update that value.
const MyProvider = ({ children }) => {
    const [value, setValue] = useState('Hello World');

    return (
        <MyContext.Provider value={{ value, setValue }}>
            {children}
        </MyContext.Provider>
    );
};
Next, you can use this provider to wrap your application or a part of it. This is typically done at a high level in your component hierarchy, such as in your App.js file.
const App = () => {
    return (
        <MyProvider>
            <MyComponent />
        </MyProvider>
    );
};
To access the context values in a component, you can use the useContext hook. This allows you to consume context values directly within your functional components.
const MyComponent = () => {
    const { value, setValue } = useContext(MyContext);

    return (
        <div>
            <p>{value}</p>
            <button onClick={() => setValue('New Value')}>Update Value</button>
        </div>
    );
};
When you run this code, a component will display the current value from context, and clicking the button will update that value. This demonstrates how easy it is to share state across components with the context API.
export default App;
Introduction And SetupComponentsPropsStateLifecycle MethodsHooksContext APIJsx SyntaxVirtual DomEvent HandlingFormsRoutingPerformance OptimizationError BoundariesHigher Order ComponentsRender PropsPortalsFragmentsRefsControlled ComponentsUncontrolled ComponentsMemoizationSuspenseLazy LoadingProp TypesDefault PropsConditional RenderingList And KeysAccessibility (a11y)State ManagementTestingCustom HooksUseEffectUseStateUseContextUseReducerUseMemoUseCallbackUseRefUseLayoutEffectUseImperativeHandleUseDebugValueAutomatic BatchingSuspense For Data FetchingStrict ModeForward RefsCreateContextLazyUseTransitionUseDeferredValueUseId