DEV Community

Cover image for React Hooks useContext con createContext
av952
av952

Posted on • Updated on

React Hooks useContext con createContext

reacthook

Para poder hacer uso de este hook de React es necesario implementar 3 sencillos pasos. Lo primero sería crear un archivo donde vivirá el contexto para toda nuestra aplicación, para este ejemplo lo llamaremos Contexto.jsx.
Hacemos la importación de los hooks a utilizar para este ejemplo

import {createContext,useContext,useState} from 'react'
Enter fullscreen mode Exit fullscreen mode
  1. Definimos el contexto
const Appcontext = createContext({
  items:[],
  create:()=>{}
})
Enter fullscreen mode Exit fullscreen mode

Dentro estamos nombrando las operaciones que van a vivir dentro del contexto las cuales van a poder ser accedidas desde los otros componentes.

  1. Implementación
export default function Contexto({children}){
  const [items,setItems]= useState([
    {
      id: 0,
      title: 'empezar'
    },
    {
      id:1,
      title: 'terminar'
    }
  ])

  function create(item){
    setItems([...items,item])
  }

  return(
    <AppContext.provider
    value={{
      items,
      create,
    }}
    >
      {children}
    </AppContext.provider>
  )
}
Enter fullscreen mode Exit fullscreen mode

Va a recibir como prop la palabra children que hace referencia a los hijos que va a contener en este caso la función contexto.
Dentro del mismo archivo que estamos trabajando vamos a crear la función que va a contener los metodos y operaciones que se quieran llevar a cabo y que serán ejecutadas desde los componentes que necesiten acceder a ellas.
Por ultimo en el return hacemos el llamado a para pasar como props la información del componnete y el quien dibujara los elementos contenidos.

  1. Adicionalmente podemos crear una función que haga el llamado a el contexto para con esto únicamente tener que invocarla dentro de los componnetes que necesiten acceder a la información.
export function useAppContext(){
  return useContext(Appcontext)
}
Enter fullscreen mode Exit fullscreen mode

Ahora para poder hacer uso de este Hook dentro del componente APP.jsx hacemos la importación del componnete Contexto.jsx y envolvemos dentro de este al componente que queramos que tenga acceso a lo establecido dentro de Contexto.jsx, en este caso será el componente Todo

import Todo from './components/Todo'
import {Contexto} from './components/Contexto'

function App() {
  const [count, setCount] = useState(0)

  return (
    <div className="App">
      <h2>Provider</h2>
      <Contexto>
        <Todo/>
      </Contexto>
    </div>
  )
}

export default App
Enter fullscreen mode Exit fullscreen mode

Para finalizar en el componente Todo.jsx importamos el useAppContext para poder acceder y modificar los elementos del contexto.

import { useAppContext } from '../utils/Contexto'

export const Todo = () => {
    const contexto = useAppContext()
  return (
    <div>
     <p>conexto.items[0]</p>
    </div>
  )
}
Enter fullscreen mode Exit fullscreen mode

👽 Espero sea útil esta información, no olvides dejar tu comentario y dar like :)👽

👀👀👀👀También pueden seguirme en tiktok👀👀👀👀

Top comments (0)