使用 React-Modal (react js) 传递 Props (img url )

2023-12-26

我需要将图像 url 传递给 React js 中的模态。就像,单击“imgae 附件”中的项目时,它会显示带有所选项目图像的模式。但它无法通过传递 img={item.document} 显示我的图像数据,下面是我的代码:

DepositRecord.js

import React, { Component } from "react";
import { Table } from "react-bootstrap";
import { Button, ButtonToolbar } from "react-bootstrap";
import { AddDepositModal } from "./AddDepositModal";

export class DepositRecord extends Component {
  constructor(props) {
    super(props);
    this.state = { deps: [], addModalShow: false };
  }

  componentDidMount() {
    this.refershList();
  }

  refershList() {
    this.setState({
      deps: [
        { id: 9, userId: "12", document: "img1_url" },
        { id: 8, userId: "16", document: "img2_url" },
        { id: 6, userId: "13", document: "img3_url" },
        { id: 4, userId: "1", document: "img4_url" },
        { id: 2, userId: "1", document: "img5_url" }
      ]
    });
  }

  render() {
    const { deps } = this.state;

    let addModalClose = () => this.setState({ addModalShow: false });

    return (
      <div>
        <h3>Customer's Deposit Record</h3>
        <br />

        <Table className="mt-4" striped bordered hover size="sm">
          <thead>
            <tr>
              <th>Deposit id</th>
              <th>user id</th>
              <th>img attachment</th>
            </tr>
          </thead>
          <tbody>
            {deps.map((item) => (
              <tr key={item.id}>
                <td>{item.id}</td>
                <td>{item.userId}</td>
                <td>
                  <ButtonToolbar>
                    <Button
                      variant="primary"
                      onClick={() => this.setState({ addModalShow: true })}
                    >
                      image attachment
                    </Button>

                    <AddDepositModel
                      show={this.state.addModalShow}
                      onHide={addModalClose}
                      img={item.document}
                    />
                  </ButtonToolbar>
                </td>
              </tr>
            ))}
          </tbody>
        </Table>
      </div>
    );
  }
}

export default DepositRecord;

AddDepositModal.js

import React, { Component } from 'react';
import { Modal, Button, Row, Col, Form } from 'react-bootstrap';

export class AddDepositModal extends Component {
    constructor(props) {
        super(props);
    }

    render() {
        return (

            <Modal
                
                {...this.props}
                size="lg"
                aria-labelledby="contained-modal-title-vcenter"
                centered
            >
                <Modal.Header closeButton>
                    <Modal.Title id="contained-modal-title-vcenter">
                    Deposit Record
                    </Modal.Title>
                </Modal.Header>
                <Modal.Body>
                <img src={this.props.img} width={700} height={1100}/>
                </Modal.Body>
                <Modal.Footer>
                    <Button variant="danger" onClick={this.props.onHide}>Close</Button>
                </Modal.Footer>
            </Modal>


        );

    }
}
export default AddDepositModal;

我的问题:我无法将图像 URL 传递给 Modal 组件,并且没有更好的想法在此代码中解决它。

请帮助我,如果有任何包含、更改或完整的解决方案以完美理解需求,那就太好了。提前谢谢了!


您好,这是您的解决方案

DepositRecord.js


import React, { useEffect, useState } from "react";
import { Button, ButtonToolbar, Table } from "react-bootstrap";
import AddDepositModal from "./AddDeposiModal";

const DepositRecord = () => {
  const [deps, setDeps] = useState([]);
  const [visibleModal, setVisibleModal] = useState(false);
  const [depImage, setDepImage] = useState(null);

    useEffect(() => {
    loadDepsHandler();
    }, []);

  const loadDepsHandler = () => {
    const myRequest = new Request("https://randomuser.me/api/", {
      method: "GET",
      cache: "default",
    });
    debugger;
    fetch(myRequest)
      .then((res) => res.json())
      .then((data) => {
        const { results } = data;
        setDeps(results);
      })
      .catch((err) => console.log(err));
  };

  const setDepHandler = (id) => {
    const dep = deps.find((a) => a.id.value === id);
    debugger;
    setDepImage(dep.picture.large);
    setVisibleModal(true);
  };

  return (
    <div>
      <h3>Customer's Deposit Record</h3>
      <br />

      <Table className="mt-4" striped bordered hover size="sm">
        <thead>
          <tr>
            <th>Deposit id</th>
            <th>user name</th>
            <th>img attachment</th>
          </tr>
        </thead>
        <tbody>
          {deps.map((item) => (
            <tr key={item.id.name}>
              <td>{item.id.name}</td>
              <td>{item.value}</td>
              <td>
                <ButtonToolbar>
                  <Button
                    variant="primary"
                    onClick={() => setDepHandler(item.id.value)}
                  >
                    image attachment
                  </Button>
                </ButtonToolbar>
              </td>
            </tr>
          ))}
        </tbody>
      </Table>
      {visibleModal && (
        <AddDepositModal
          show={visibleModal}
          onHide={() => setVisibleModal(false)}
          image={depImage}
        />
      )}
    </div>
  );
};

export default DepositRecord;

AddDepositModal.js


 import React from "react";
 import { Button, Modal } from "react-bootstrap";

 const AddDepositModal = ({ show, onHide, image }) => {
  return (
    <Modal show={show} onHide={onHide}>
      <Modal.Header closeButton>
        <Modal.Title id="contained-modal-title-vcenter">
          Deposit Record
        </Modal.Title>
      </Modal.Header>
      <Modal.Body>
        <img src={image} width={700} height={1100} alt={image} />
      </Modal.Body>
      <Modal.Footer>
        <Button variant="danger" onClick={onHide}>
          Close
        </Button>
      </Modal.Footer>
    </Modal>
  );
};
export default AddDepositModal;

添加了异步调用。此 API 是公开的,因此需要一些时间才能获得结果 。

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

使用 React-Modal (react js) 传递 Props (img url ) 的相关文章

随机推荐

  • 检查 C++ 中多个值的相等性

    我正在 C 中寻找一种简单 快速且描述性的方法来检查某个值是否包含在一组固定的其他值中 就像在 Python 中一样 人们可以在其中编写 if some function in 2 3 5 7 11 do something 一些明显的选择
  • Java 自动装箱和三元运算符的疯狂

    刚刚花了几个小时调试这段代码 令人沮丧 LinkedHashMap
  • 使用 monad 读取 INI 文件

    我正在尝试使用 monads 使用 haskell 读取 INI 文件 这是我的代码 import Control Monad import Data Ini main do config lt readIniFile configs co
  • 是否可以在拉取请求(Github)中更改其他人的代码?

    在 Github 项目上 我看到有人在Pull Requests部分 但我发现他犯了很多错误 因此他的代码需要更正 与其要求他改他的代码 是不是可以自己动手 就是我想自己改他的代码 如何 我也是该项目的成员 而且我是新人 对现有拉取请求启用
  • Fabric 网络 - 当宕机的对等点连接回网络时会发生什么?

    我最近使用 Docker compose 部署了结构网络 我试图模拟一个宕机的对等点 本质上是这样的 使用运行结构网络的 docker compose 将 4 个对等点联机 1 个对等点 即第 4 个对等点出现故障 通过 docker st
  • Liferay 搜索容器分页

    我在代码中使用了 liferay ui search container 搜索结果会正确显示 直到我单击 下一步 该 portlet 正在重新加载 这会将我带到该 portlet 的第一页 从而破坏了所显示的搜索结果 即使在 portlet
  • Laravel 5.8 - 如何将文件从存储目录移动到公共目录?

    我想将我的一个文件从storageLaravel 中的文件目录publiclaravel 中的文件目录 无需更改我的文件系统配置 这可能吗 是的 你可以这样做存储 移动 https laravel com docs 5 8 filesyst
  • 网格中两点之间的最短路径。有一个捕获

    我遇到这个问题 我必须通过向右或向下移动来找到 NxM 网格中从 A 点 总是左上角 到 B 点 总是右下角 的最短路径 听起来很容易 是吗 问题是 我只能移动我现在坐在的图块上显示的数字 让我举例说明 2 5 1 2 9 2 5 3 3
  • 防止 jquery mobile 设置元素样式

    我想在页面上隐藏一个复选框 我明显的第一次尝试如下
  • 来自 EventEmitter 的热共享 Observable

    有没有办法从一个EventEmitter 或 Angular 2 alpha 46 RxJS 5 alpha 中可用的等效项 IE 如果我们在值解析后订阅 它将使用之前解析的值触发 类似于我们总是返回相同的承诺 理想情况下 仅使用 Angu
  • 在 PHP 中实现切削库存算法

    我需要实施下料问题 http en wikipedia org wiki Cutting stock problem与 php 脚本 由于我的数学能力不是很好 所以我只是想用暴力来解决 从这些参数开始 inventory 是可剪切的长度数组
  • 使用斯坦福 CoreNLP 解决共指问题 - 无法加载解析器模型

    我想做一项非常简单的工作 给定一个包含代词的字符串 我想解析它们 例如 我想把这句话 Mary has a Littlelamb She is Cute 在 玛丽有一只小羊羔 玛丽很可爱 中 我尝试过使用斯坦福 CoreNLP 但是 我似乎
  • 如何使用 jQuery 检测 URL 更改

    jQuery 如何检测 url 的更改 例如 如果用户转到某个页面site com faq 没有任何显示 但如果他去site com faq openjquery 检测到它并执行某些操作 尝试这个 window on hashchange
  • 为什么 dplyr 的 top_n() 不起作用?

    我有一个名为的数据框df City State Price Dogs Portland OR 75 1 Portland OR 100 3 San Diego CA 12 4 San Diego CA 23 5 I used dplyr s
  • 在 Blazor wasm 中自动将访问令牌附加到 HTTP 客户端

    我正在为我的 Blazor wasm 应用程序使用开放 id 连接身份提供程序 并且希望将访问令牌附加到 http 客户端 如中所述this https learn microsoft com en us aspnet core blazo
  • 无法连接相机服务

    我正在尝试访问手机上的相机 在将代码放入小部件之前 我正在编写一个简单的存根应用程序 我还没有走多远 代码总是抛出运行时异常 无法连接到相机服务 错误的代码 从公共软件示例中截取 是 Override public void onResum
  • Oracle - 删除重复项

    我发现了以下删除重复项的方法 DELETE FROM table name A WHERE a rowid gt ANY SELECT B rowid FROM table name B WHERE A col1 B col1 AND A
  • 如何将 D3.js 与 Angular 2 的渲染器 API 集成

    我已成功将 Angular 2 Alpha 44 与 D3 js 集成
  • 如何在 C# Windows 应用程序中获取网格的列值?

    如何在 C Windows 应用程序中获取网格的列值 当我单击单元格时 它应该获得列值 private void gridAgentDetails Click object sender EventArgs e for int i 0 i
  • 使用 React-Modal (react js) 传递 Props (img url )

    我需要将图像 url 传递给 React js 中的模态 就像 单击 imgae 附件 中的项目时 它会显示带有所选项目图像的模式 但它无法通过传递 img item document 显示我的图像数据 下面是我的代码 DepositRec