Reaccionar - "TypeError: No se puede leer la propiedad 'imagen' de indefinida" mientras se aplica estilo con CSS

Alessandra Pettinato

Soy nuevo en el desarrollo web y en React, y le pediría amablemente ayuda relacionada con mi proyecto actual.

Estoy accediendo a datos de un archivo local e intento mostrarlos al hacer clic. Funciona bien si no toco nada relacionado con el estilo, pero cada vez que agrego algo de CSS, mi código se rompe.

Supongo que cualquier pregunta es similar a la que se hace aquí , pero esta solución no me funciona. ¡Ni siquiera puedo agregar una etiqueta div! ¿Alguien puede sugerir qué hacer? ¡Gracias!

import { withRouter } from "react-router-dom";
import "../womenInfo.css";

function WomanDetails({ routeProps, data }) {
 const foundCard = () => {
    return data.find((card) => card.id === +routeProps.match.params.id);
};
return (
    <div className="woman-page">
        <>
            <img className="info-img" src={foundCard().image} alt="" />
        </>
        <>
            <h3 className="women-title">{foundCard().title}</h3>
        </>
        <>
            <p className="women-years">{foundCard().years}</p>
        </>
        <>
            <p className="women-nationality">{foundCard().nationality}</p>
        </>
        <>
            <p className="women-contribution">{foundCard().contribution}</p>
        </>
    </div>
 );
}

export default withRouter(WomanDetails);
Drew Reese

Asunto

Array.prototype.find puede potencialmente devolver undefined si ningún elemento en la matriz coincide.

El find()método devuelve el valor del primer elemento en la matriz proporcionada que satisface la función de prueba proporcionada. Si ningún valor satisface la función de prueba, undefinedse devuelve.

Si foundCard()devuelve undefined foundCard().image, arrojará el TypeError: Cannot read property 'image' of undefined”error que está viendo.

Solución

Simplifique foundCardde función a una expresión de asignación. Verifique el foundCardvalor y, si es falsey (indefinido, nulo, falso), regrese nullantes para indicar que no hay nada que representar.

Los React Fragments también solo son necesarios cuando se devuelve más de un nodo y no desea enturbiar el DOM con div"contenedores". No necesitan rodear cada elemento.

function WomanDetails({ routeProps, data }) {
  const foundCard = data.find((card) => card.id === +routeProps.match.params.id);

  if (!foundCard) return null;

  return (
    <div className="woman-page">
      <img className="info-img" src={foundCard.image} alt="" />
      <h3 className="women-title">{foundCard.title}</h3>
      <p className="women-years">{foundCard.years}</p>
      <p className="women-nationality">{foundCard.nationality}</p>
      <p className="women-contribution">{foundCard.contribution}</p>
    </div>
  );
}

export default withRouter(WomanDetails);

Este artículo se recopila de Internet, indique la fuente cuando se vuelva a imprimir.

En caso de infracción, por favor [email protected] Eliminar

Editado en
0

Déjame decir algunas palabras

0Comentarios
Iniciar sesiónRevisión de participación posterior

Artículos relacionados

Recibí este error => TypeError: no se puede leer la propiedad 'imagen' de indefinida

El estilo CSS no se aplica

reaccionar la clase css no se aplica

cargando contenido html con éxito pero el estilo CSS no se aplica en angular2?

No se aplica ningún estilo al usar Reactstrap con Parcel

El estilo no se aplica en NextJS con TailwindCSS

El estilo no se aplica al componente con estilo usando la sintaxis de estilo (StyledComponent)

CSS aplica estilo con un selector de Id.

El estilo de clase / id de CSS no se aplica a los descendientes <nav>, <footer> y <header> incluidos con PHP

El estilo css de alerta de uib no se aplica

¿Por qué no se aplica una parte de mi estilo CSS?

¿Por qué mi estilo css no se aplica a los elementos html?

Wordpress: el estilo CSS no se aplica en una fila

Reaccionar estilo nativo con condicional

Reaccionar: la interfaz de usuario no se pintó correctamente con la biblioteca dhtmlx-gantt cuando se aplica con filtros

el estilo css y HTML css no se aplica a la identificación

el estilo css no se aplica al selector de clase guid css

Llene NaN con 0 no se aplica en Dataframe mientras lee CSV

Ref no se aplica para reaccionar sonido

Selector de CSS que se aplica a elementos con dos clases

CSS con ámbito no se aplica dentro del componente

El estilo local con ámbito de elemento no se aplica a los niños

El estilo de cuadro aparentemente no se aplica al agregar nuevos elementos con botón

¿El estilo / JS no se aplica al elemento con ngAfterViewInit? - Angular2 +

Reaccionar una llamada de gancho no válida mientras se trabaja con Stripe

Reaccionar el gancho personalizado con el detector de eventos no funciona mientras se actualiza el estado

Reaccionar el gancho personalizado con el detector de eventos no funciona mientras se actualiza el estado

Reaccionar el gancho personalizado con el detector de eventos no funciona mientras se actualiza el estado

Reaccionar una llamada de gancho no válida mientras se trabaja con Stripe