[英]TypeError: Cannot read property 'image' of undefined while using react router
[英]React - "TypeError: Cannot read property 'image' of undefined" while styling with CSS
我是 web 开发和 React 的新手,我会请求一些与我当前项目相关的帮助。
我正在从本地文件访问数据并尝试在单击时显示它们。 如果我不触及与样式相关的任何内容,它工作正常,但每次我添加一些 CSS 我的代码都会中断。
我想任何问题都类似于这里提出的问题,但这个解决方案对我不起作用。 我什至无法添加 div 标签? 有人可以建议该怎么做吗? 谢谢!
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);
如果数组中没有匹配的元素, Array.prototype.find可能会返回 undefined。
find()
方法返回提供的数组中满足提供的测试 function 的第一个元素的值。 如果没有值满足测试 function,则返回undefined
。
如果foundCard()
返回 undefined 则foundCard().image
将抛出您看到的TypeError: Cannot read property 'image' of undefined”
错误。
foundCard
从 function 简化为赋值表达式。 检查foundCard
值,如果为假(未定义,null,假),则提前返回null
以指示没有要渲染的内容。
React Fragment
也仅在返回多个节点并且您不想用div
“容器”混淆 DOM 时才需要。 他们不需要包围每个元素。
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);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.