Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

133
Visualizações
how to use function inside provider

I have a provider like this:

import {createContext, useContext, useState} from 'react'

// Create Context object.
const CartContext = createContext({
   deliveryPersion:'own',//or other
   coupon:{},
   updateCoupon: (obj) => {},
   updateDeliveryPersion: (type) => {},
})



// Export Provider.
export function CartProvider(props) {

   const updateCoupon = (_coupon) => {
      setState({...state,coupon: _coupon})
   }


  const updateDeliveryPersion = (type) => {
     setState({...state,deliveryPersion: type})
   }



   const initState = {
      deliveryPersion:'own',
      coupon:{},
      updateCoupon:updateCoupon,
      updateDeliveryPersion:updateDeliveryPersion
   }

   const [state, setState] = useState(initState)
    
    return (
       <CartContext.Provider value={state}>
        {props.children}
       </CartContext.Provider>
    )
}

// Export useContext Hook.
export function useCartContext() {
    return useContext(CartContext);
}

My senario:

inside component1 I updated the deliveryPersion variable like this:

...
cartContext.updateDeliveryPersion('other')

inside component2 I updated coupon object:

const data = {/**/}
cartContext.updateCoupon(data)

at this here deliveryPersion changed to default value.(own value)

where is my problem?

about 4 years ago · Juan Pablo Isaza
2 Respostas
Responde à pergunta

0

You can pass whatever you need to reuse on your CartContext.Provider value, for instance:

<CardContext.Provider value={{state, updateCoupon, updateDeliveryPersion}}>
  ... You need to call the components that will use the context here
</CardContext.Provider>

then in your children components:

const { state, updateCoupon, updateDeliveryPersion } = useContext(CardContext);

Or just what you need to use in the component. Hope this could help. You can read more here: https://en.reactjs.org/docs/context.html.

about 4 years ago · Juan Pablo Isaza Relatório

0

You have already defined your useCardContext hook, so you can use it in your functional component like this:

// Let say you want to use the updateDeliveryPersion method from your hook
const {updateDeliveryPersion} = useCardContext();

By the way, if you want to set a new state with a prev value, you should use a callback instead of passing the current commited state value:

const updateCoupon = (_coupon) => {
      setState(prev=>{...prev,coupon: _coupon})
   }

Also, you can also cache your context value with useMemo to avoid causing extra rerendering on the child (which is usually your whole app in this case).

about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda