Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

554
Views
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 answers
Answer question

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!