Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

555
Vistas
React Hook "useNavigate" no se puede llamar en el nivel superior. Los React Hooks deben llamarse en un componente de función React o en una función React Hook personalizada
import { useNavigate} from 'react-router-dom'; import React from 'react' import CustomButton from '../custom-button/custom-button.component'; import './cart-dropdown.styles.scss'; import CartItem from '../cart-item/cart-item.component'; import {connect} from 'react-redux'; import { selectCartItems } from '../../redux/cart/cart.selectors'; import {createStructuredSelector} from 'reselect'; const CartDropDown = ({cartItems }) => { return ( <div className="cart-dropdown"> <div className="cart-items"> {cartItems.length ? cartItems.map(cartItem =><CartItem key={cartItem.id} item={cartItem} />) : <span className="empty-message">Your cart is empty</span> } <CustomButton onClick{() => window.history.push('/checkout')}> GO TO CHECKOUT </CustomButton> </div> </div> ) } const mapStateToProps = createStructuredSelector({ cartItems: selectCartItems }) export default useNavigate(connect(mapStateToProps) (CartDropDown));
about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

useNavigate no es un componente de orden superior, es un enlace React, debe usarse dentro de un componente de función o un enlace React personalizado.

Muévalo al cuerpo de la función y corrija la navegación.

 const CartDropDown = ({ cartItems }) => { const navigate = useNavigate(); // <-- use hook in component return ( <div className="cart-dropdown"> <div className="cart-items"> {cartItems.length ? cartItems.map(cartItem => ( <CartItem key={cartItem.id} item={cartItem} /> )) : <span className="empty-message">Your cart is empty</span> } <CustomButton onClick{() => navigate('/checkout')} // <-- call navigate in handler > GO TO CHECKOUT </CustomButton> </div> </div> ) } const mapStateToProps = createStructuredSelector({ cartItems: selectCartItems }) export default connect(mapStateToProps)(CartDropDown);
about 4 years ago · Juan Pablo Isaza Denunciar

0

Un gancho de reacción debe estar dentro del componente. Obtiene una función de navigate de useNavigate() , y luego la llama para navegar.

 import { useNavigate } from 'react-router-dom' import React from 'react' import CustomButton from '../custom-button/custom-button.component' import './cart-dropdown.styles.scss' import CartItem from '../cart-item/cart-item.component' import { connect } from 'react-redux' import { selectCartItems } from '../../redux/cart/cart.selectors' import { createStructuredSelector } from 'reselect' const CartDropDown = ({ cartItems }) => { const navigate = useNavigate() // <-- hooks must be INSIDE the component const onCustomButtonClick = (event) => { //window.history.push('/checkout') // <-- no navigate('/checkout') } return ( <div className="cart-dropdown"> <div className="cart-items"> { cartItems.length ? cartItems.map(cartItem => <CartItem key={cartItem.id} item={cartItem} />) : <span className="empty-message" > Your cart is empty</span> } <CustomButton onClick={onCustomButtonClick}> GO TO CHECKOUT </CustomButton> </div> </div>) } const mapStateToProps = createStructuredSelector({ cartItems: selectCartItems }) //export default useNavigate(connect(mapStateToProps)(CartDropDown)) export default CartDropDown
about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda