React - TypeError:无法读取未定义的属性“图像”

2023-12-13

所以我正在为一个副项目创建一个电子商务商店,但我遇到了一个问题。 在主页上我有所有产品,并且我已经为产品详细信息创建了一条路线。当我点击其中之一时,它会获取 id,并应输出所有产品详细信息。我在 JSON 数组“data.js”中有有关产品的详细信息。

当我点击主页中的产品时,它显示错误:TypeError: Cannot read property 'image' of undefined- 在里面return部分,我放的地方{product.image} in.

但是,当我取消注释检查产品是否存在的部分(ProductPage.js)时,它仍然输出"Item does not exist!",就好像“data.js”文件中没有任何有关产品的数据一样。

App.js

<Route path="/product/:id" component={ProductPage}></Route>

产品页面.js

import React from 'react';
import data from '../data';

export default function ProductPage(props) {
const product = data.products.find((x) => x._id === props.match.params.id);
// if (!product) {
//     return <div>Item does not exist!</div>
// }
return (
    <div>
        <div className="row">
            <div className="col">
                <img src={product.image} alt={product.name}></img>
            </div>
        </div>
    </div>
);
}

Data.js

const data = {
products:[
{
    _id: 1,
    name: 'iPhone 11 Pro',
    category: 'Smartphones',
    image: '/images/2.jpg',
    price: 949,
    rating: 4.8,
    numReviews: 15,
    description: 'testtesttesttesttesttesttesttest',
},
],
};
export default data;

提前致谢。


您需要将 ProductPage 组件包装为带路由器访问props.match.params.id.

Edit: 如果你要使用props.match.params.id为了进行比较,请记住它是一个字符串

将您的 ProductPage 组件更改为:

import React from 'react';
import data from '../data';
import {withRouter} from 'react-router';

function ProductPage(props) {
const product = data.products.find((x) => x._id === props.match.params.id);
return (
    <div>
        <div className="row">
            <div className="col">
                <img src={product.image} alt={product.name}></img>
            </div>
        </div>
    </div>
);
}

export default withRouter(ProductPage);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

React - TypeError:无法读取未定义的属性“图像” 的相关文章

  • 引导程序提前输入未填充承诺的响应

    我的引导程序预输入如下
  • 在打字稿中导入 json

    我是 typescript 的新手 在我的项目中 我们使用 typescript2 在我的要求之一中 我需要导入 json 文件 所以我创建了 d ts 文件如下 test d ts declare module json const va
  • Bootstrap按钮加载+Ajax

    我正在使用 Twitter Bootstrap 的按钮加载状态 http twitter github com bootstrap javascript html buttons http twitter github com bootst
  • 如何将函数附加到弹出窗口关闭事件(Twitter Bootstrap)

    我做了一些搜索 但我只能认为我可以将事件附加到导致其关闭的按钮 https stackoverflow com questions 13205103 attach event handler to button in twitter boo
  • 设置 cookie 时中断 JavaScript 执行

    当设置 cookie 时 是否可以始终中断浏览器开发人员工具中的 javascript 执行 无需显式设置 JS 断点 document cookie 在 html head 块的开头添加此代码片段效果很好
  • HTML5 MediaSource 适用于某些 mp4 文件,但不适用于其他文件(相同的编解码器)

    我正在玩 MediaSource API 代码直接取自 Mozilla 的示例页面 https developer mozilla org en US docs Web API MediaSource endOfStream https d
  • Jquery 数据表列总和

    我只是参考一下这个链接 https datatables net examples advanced init footer callback html了解如何获取 jquery 数据表中的列总计 但我已经完成了一半的项目 我在html页面
  • 尝试将数据存储在点击器网站中

    我正在尝试存储一个名为的变量score无论何时刷新 您都会一次又一次地使用它 我不明白的是它的代码是什么 我尝试了一些方法 但似乎都不起作用 这是我的答题器网站 但是当我尝试使用 JavaScript 来存储它时 它不起作用window o
  • React onClick 事件仅在渲染组件时触发

    动态渲染组件的 onClick 函数应通过 useState 设置所选日期 imgs 上的 onClicks 完全按照您的预期工作 没有任何问题 即使只是在其位置放置一个带有 onClick 属性的 div 也是行不通的 当组件渲染时 on
  • Firebase 函数 onWrite 未被调用

    我正在尝试使用 Firebase 函数实现一个触发器 该触发器会复制数据库中的一些数据 我想观看所有添加的内容votes user vote 结构为 我尝试的代码是 const functions require firebase func
  • 在移动设备上滚动

    这个问题更多的是一个建议研究 我确实希望它对其他人有帮助 并且它不会关闭 因为我不太确定在哪里寻求有关此事的建议 在过去的 6 个月里 我一直在进行移动开发 我有机会处理各种设备上的各种情况和错误 最麻烦的是滚动问题 当涉及到在网站的多个区
  • 使用 Vue 的多模式组件

    我在 Vue 中实现动态模式组件时遇到问题 A common approach I follow to display a set of data fetched from the db is I dump each of the rows
  • 在 HTML 下拉列表中有一个滚动条

    我正在寻找一种在 HTML 的下拉列表中添加滚动条的方法 这样如果下拉列表包含的内容超过例如 5 项 将出现滚动条以查看其余项 这是因为我将被迫列出一些大清单 过去几个小时我一直在谷歌上搜索它 但没有运气 它需要适用于 IE8 FF 和 C
  • 如何使用 crypto-js 解密 AES ECB

    我正在尝试将加密数据从 flash 客户端 发送到服务器端的 javascript 在 asp 中作为 jscript 运行 有几个 javascript Aes 库 但它们实际上没有文档记录 我正在尝试使用 crypto js 但无法让代
  • 带参数的事件监听器

    我想将参数传递给 JavaScript 中的事件侦听器 我已经找到了解决方案 但我无法理解它们为什么或如何工作以及为什么其他解决方案不起作用 我有 C C 背景 但是 Javascript 函数的执行有很大不同 您能否帮助我理解以下示例如何
  • 如何用另一个响应替换窗口的 URL 哈希?

    我正在尝试使用替换方法更改哈希 URL document location hash 但它不起作用 function var anchor document location hash this returns me a string va
  • 从 FileReader 设置背景图像样式

    我正在寻找一种解决方案 允许我从文件上传输入中获取文件并通过设置 document body style backgroundImage 来预览它 以下代码用于在 Image 元素中显示预览 function setImage id tar
  • HTML 锚点,禁用样式

    我有一些 html 锚链接代码 与文档的其余部分不同 我希望它看起来不是链接 有没有一种简单的方法可以禁用由于将文本包装在锚标记中而引起的样式更改 而不必强行使其相同 即 如果我更改正文字体样式 我不必也更改其他一些 link东西 将颜色设
  • Jquery - 选择选项后如何获取选项的特定数据类型?

    我将直接跳到标记 然后解释我想要做什么 HTML 选择选项
  • 如何使用asm.js进行测试和开发?

    最近我读到asm js规范 看起来很酷 但是是否有任何环境 工具来开发和测试这个工具 这还只是处于规范阶段吗 您可以尝试使用 emscripten 和 ASM JS 1 并从侧分支在 firefox 构建中运行它 有关 asm js 的链接

随机推荐

  • C 和 C++ 中的标准头文件列表

    在哪里可以找到 C 和 C 中所有头文件的列表 当我构建库时 我收到类似 tree h not found 我想这是 C 和 C 中的标准头文件 这引起了我想了解所有头文件及其贡献的好奇心 有地方可以找吗 我正在 Solaris Unix
  • 完成后将变量保存在 .awk 文件中以供下次运行

    因此 我有一个 awk 文件 它将一个订单文件拆分为多个订单文件 文件名从orders xml 包含100个订单的主文件 到递增的文件 如order 1 xml order 2 xml order 3 xml等 当 awk文件完成文件分割后
  • 用于添加到收藏夹的精灵或类似效果

    我有一个 iPhone 应用程序 其中包含 全部 和 收藏夹 选项卡 其中包含标准主细节布局 在 全部 选项卡上 用户可以选择 添加到收藏夹 我正在寻找一个好的视觉队列来向用户表明这样做后可以从 收藏夹 选项卡访问该项目 是否存在类似 精灵
  • Asp.net WebApi 中的自定义授权 - 一团糟?

    我正在阅读有关 Web Api 授权的多个资源 书籍和一些答案 假设我想添加仅允许某些用户访问的自定义属性 Case 1 我见过这种方法压倒性的 OnAuthorization 如果出现问题 它会设置响应 public class Allo
  • PyQt5:使用QThread弹出进度条

    我怎样才能实现进度条 in a 弹出窗口它通过所谓的 Worker 类 即消耗时间 CPU 的任务 监视正在运行的函数的进度QThread 我已经检查了无数的示例和教程 但进度条显示在弹出窗口中的事实似乎让一切变得更加困难 我相信我想要的是
  • FineUploader onProgress() 回调不适用于 Android

    Fine Uploader 的 onProgress 回调在 Android 设备上不起作用 这是我的代码 onProgress function id fileName loaded total alert debug this aler
  • 在Python中使用Win32api获取鼠标滚轮滚动

    我想读取鼠标滚轮滚动事件然后模拟它们 我知道我可以使用下面的代码来模拟它 Scroll one up win32api mouse event MOUSEEVENTF WHEEL x y 1 0 Scroll one down win32a
  • Angular 4 - 动态更新 Facebook 的元标签(开放图)

    我们如何动态添加 更新元标记 以便 Facebook Whatsapp 共享对话框选择它们 我将 Angular 2 应用程序升级到 Angular 4 以便在我们从 API 获取组件中的数据后 使用元服务动态添加 更新元标记 到目前为止
  • CSS:在不改变容器大小的情况下将某些文本加粗

    我有一个水平导航菜单 它基本上只是一个 ul 元素并排设置 我不定义宽度 而只是使用填充 因为我希望宽度由菜单项的宽度定义 我将当前选定的项目加粗 问题在于 在加粗时 单词会变得稍微变宽 这会导致其余元素稍微向左或向右移动 有什么聪明的方法
  • 是否可以在 RAM 中执行一些计算?

    理论上 有没有办法使用内存相关指令 例如move clflush或其他任何东西 例如xor例如 在两个相邻行之间 由于我对 RAM 和汇编的了解有限 我无法想到任何这样的可能性 不 任何计算都是在 CPU 或 GPU 或其他可以加载 存储到
  • SAS PRX 请提取子字符串

    我正在尝试使用 SAS PRX 函数从我的数据集中提取子字符串 但它只返回精确的匹配项 而我需要它更加灵活并提取匹配各种条件的匹配项 我已将我的数据复制到下面 如您所见 我的数据中的变量之一是 brandmodel 其中包含特定相机的品牌名
  • 如何使用annotation_custom()将GROB放置在绘图区域的精确区域?

    我正在尝试使用以下命令重现以下 base R 图ggplot2 我已经完成了大部分工作 但目前令我困惑的是连接图右侧边缘地毯图的线段的位置以及相应的标签 标签已通过以下方式绘制 在下面的第二张图中 anotation custom 我已经使
  • JavaFX 打包:NoClassDefFoundError

    我使用 maven 和 OpenJDK 1 8 打包 JavaFX 应用程序 我的 pom xml 中的相关部分
  • 如何为终端制作动画 bash shell 提示符?

    我想在终端中制作动画光标提示 Ubuntu 14 04 所以我制作这个脚本 while do echo ne r sleep 0 3 echo ne r sleep 0 3 echo ne 一 r sleep 0 3 echo ne r s
  • 从base64字符串获取图像尺寸

    我收到图像的 base64 字符串并将其用作 html 页面的源 反过来 img 是 div 的子级 我想让 div 根据图像尺寸自动调整大小 尝试使用 javascript element style height 获取图像的尺寸 但它不
  • 什么是烫发空间?

    在学习 Java 内存分析时 除了 堆 之外 我还不断看到术语 永久空间 我知道堆是什么 什么是 Perm 空间 它代表永久代 永久代很特殊 因为它包含描述的元数据 用户类别 不是的类别 Java 语言的一部分 例子 这些元数据的一部分是对
  • Glassfish 在哪里将类加载器委托选项设置为 false

    我有一个 Web 应用程序 在 glassfisch 3 1 2 上运行 我遇到了 ClassCastException 我想尝试通过将类加载器委托设置为 false 来解决它们 我无法弄清楚在哪里 什么文件 插入以下 xml 标记
  • PHP 根据另一个数组中的文本重复项求和数组值

    我有两个数组 两个数组的计数长度始终相同 第一个具有与整数混合的双精度值 第二个具有文本 仅字符串 值 它们确实相关 所以我需要它们都保持有序 抱歉 没有可用的键 按设计 我需要对包含字符串的数组中重复的值进行求和 Example data
  • Visual Basic 如何读取 CSV 文件并在数据网格中显示值?

    我正在使用 VB 2005 如何打开 CSV 文件并读取列 行并在数据网格中显示值 CSV 文件示例 杰史密斯 电子邮件受保护 然后我想对每一行 即每个用户 执行一个操作 我该怎么做 正如你所知 我是一个新手 但很乐意学习 Thanks U
  • React - TypeError:无法读取未定义的属性“图像”

    所以我正在为一个副项目创建一个电子商务商店 但我遇到了一个问题 在主页上我有所有产品 并且我已经为产品详细信息创建了一条路线 当我点击其中之一时 它会获取 id 并应输出所有产品详细信息 我在 JSON 数组 data js 中有有关产品的