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

124
Visualizações
¿Cómo declarar useState condicionalmente?

Para mi problema, en este momento estoy obteniendo datos de una API como esta.

 const fetchSomething = () => dispatch => { return axios .get('productsapi/getsomething', { }) .then(res => { dispatch({ type: FETCH_SOMETHING, payload: res.data[0].Groups[0].Products, payGroup: res.data[0], }); }) .catch(err => { console.log('fetching error'); throw err; }); };

Como puede ver, obtengo 2 tipos de datos de una payload y un grupo de pago de paygroup debido al problema que encuentro en el componente.

Aquí está el componente

 let hotProductList = useSelector(state => state.productReducer.hotProduct); let hotProductGroup = useSelector( state => state.productReducer.newHotProductGroups, ); const [homeHotProductList, setHomeHotProductList] = useState(hotProductGroup.Groups[0].Products); //No Error //--------- //const [homeHotProductList, setHomeHotProductList] = useState(hotProductList); //---------

Como puede ver en useState . Si quiero representar la lista de initial productList usando datos de payGroup , tengo que declarar como useState(hotProductGroup.Groups[0].Products) . El problema es que, este tipo de declaración siempre devuelve un error que indica que

undefined is not an object

Pero si quiero representar la lista de initial productList usando datos de la payload , este error no ocurre.

¿Qué debo hacer para que la declaration works para payGroup sin obtener un error?

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

0

Supongo que homeHotProductList es una matriz. Puede configurar su homeHotProductList en useEffect . Agregue hotProductList y hotProductGroup como dependencia para useEffect . Entonces, cada vez que estos valores cambien, puede configurar homeHotProductList usando setHomeHotProductList dentro useEffect condicionalmente.

 let hotProductList = useSelector(state => state.productReducer.hotProduct); let hotProductGroup = useSelector( state => state.productReducer.newHotProductGroups, ); const [homeHotProductList, setHomeHotProductList] = useState([]); useEffect(() => { // here you can set homeHotProductList conditionally }, [hotProductList, hotProductGroup])

Y con respecto a este error

indefinido no es un objeto

Puede usar el encadenamiento opcional o el operador coalescente nulo si no obtiene un valor como hotProductGroup?.Groups?.[0]?.Products ?? []

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