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

256
Visualizações
Reaccionar: ¿cómo levantar accesorios hasta el componente principal?

Soy nuevo en React y estoy siguiendo un tutorial.

Estoy en una etapa en la que necesito elevar los accesorios de los componentes secundarios a los principales. Por el momento, tengo una función simple en el componente principal que solo consola. registra el valor recuperado del elemento secundario.

Sin embargo, no funciona. Acabo de quedar undefined en mi console.log. No estoy seguro de lo que hice mal, ya que parece lo mismo que el ejemplo en el tutorial.

¿Puede alguien ayudarme?

Aquí está mi componente principal:

 import React from 'react'; import ExpensesFilter from '../ExpensesFilter/ExpensesFilter'; import ExpenseItem from "./ExpenseItem"; import Card from "../Ui/Card"; import './Expenses.css'; const Expense = (props) => { const yearChangeHandler = (chosenYear) => { console.log(chosenYear); // Returns Undefined } return ( <div> <ExpensesFilter onYearChange={yearChangeHandler}/> <Card className="expenses"> <ExpenseItem title={props.items[0].title} amount={props.items[0].amount} date={props.items[0].date} /> </div> ); } export default Expense;

Y mi componente hijo:

 import React, { useState } from 'react'; import './ExpensesFilter.css'; const ExpensesFilter = (props) => { const [selectedYear, setSelectedYear] = useState(''); const yearChangeHandler = (event) => { const chosenYear = setSelectedYear(event.target.value); props.onYearChange(chosenYear); }; return ( <div className='expenses-filter'> <div className='expenses-filter__control'> <label>Filter by year</label> <select onChange={yearChangeHandler}> <option value='2022'>2022</option> <option value='2021'>2021</option> <option value='2020'>2020</option> <option value='2019'>2019</option> </select> </div> </div> ); }; export default ExpensesFilter;

Mi objetivo es consolar. registrar el año seleccionado en el componente principal. Cualquier ayuda es apreciada. ¡Gracias!

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

0

setSelectedYear devuelve void . Las firmas de useState y setState son:

 function useState<S>(initialState: S | (() => S)): [S, Dispatch<SetStateAction<S>>]; type Dispatch<A> = (value: A) => void;

Probar

 import React, { useState } from 'react'; import './ExpensesFilter.css'; const ExpensesFilter = (props) => { const [selectedYear, setSelectedYear] = useState(''); const yearChangeHandler = (event) => { const chosenYear = event.target.value; setSelectedYear(chosenYear); props.onYearChange(chosenYear); }; return ( <div className='expenses-filter'> <div className='expenses-filter__control'> <label>Filter by year</label> <select onChange={yearChangeHandler}> <option value='2022'>2022</option> <option value='2021'>2021</option> <option value='2020'>2020</option> <option value='2019'>2019</option> </select> </div> </div> ); }; export default ExpensesFilter;
about 4 years ago · Juan Pablo Isaza Relatório

0

Es posible que el valor que está pasando 'setSelectedYear' directamente no se establezca debido al comportamiento asíncrono de useState .

intente pasar el target.value en su lugar.

 const [selectedYear, setSelectedYear] = useState(''); const yearChangeHandler = (event) => { const chosenYear = event.target.value; setSelectedYear(chosenYear); props.onYearChange(chosenYear); };
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