javascript - 如何从模态窗口的 JSONPlaceholder 获取 ReactJS 应用程序中的照片 ID 以查看照片的详细信息?
问题描述
我对 ReactJS Photobrowser 应用程序有一个问题,我无法获取模态窗口的照片 ID 以从照片的缩略图列表中查看单击的照片。
这是下面的 PhotoLoader.js React 组件源代码。
import React, { Component } from 'react';
import Modal from './Modal.js';
import Axios from 'axios';
import './PhotoLoader.css';
import Image from 'react-bootstrap/Image';
import Container from 'react-bootstrap/Container';
import Button from 'react-bootstrap/Button';
class PhotoLoader extends Component {
constructor(props) {
super(props);
this.state = {
photosPaginated: [], // will hold the results from our ajax call
show: false
}
this.showModal = this.showModal.bind(this);
this.hideModal = this.hideModal.bind(this);
this.loadPhotosPaginated();
}
loadPhotosPaginated = () => {
Axios.get('https://jsonplaceholder.typicode.com/photos?_start=0&_limit=40')
.then(response => {
const photosPaginated = response.data;
this.setState({ photosPaginated });
});
};
showModal = () => {
this.setState({ show: true });
};
hideModal = () => {
this.setState({ show: false });
};
render() {
return (
<Container className="PhotoLoader-photobrowser-grid-container">
<Modal show={this.state.show} handleClose={this.hideModal}></Modal>
{ this.state.photosPaginated.map(photo => <Button key={photo.id+"_button"} className="PhotoLoader-photo-button" onClick={this.showModal}><Image key={photo.id+"_photo"} src={photo.thumbnailUrl} className="PhotoLoader-thumbnail" thumbnail></Image></Button>)}
</Container>
);
};
}
export default PhotoLoader;
这是下面的 Modal.js 源代码文件。
import React from 'react';
import './modal.css';
import Button from 'react-bootstrap/Button';
import Axios from 'axios';
import Image from 'react-bootstrap/Image';
var title;
var url;
const loadPhoto = (id) => {
Axios.get('https://jsonplaceholder.typicode.com/photos/'+id)
.then(response => {
title = response.data.title;
url = response.data.url;
});
return (
<div>
<p>{title}</p>
<Image src={url} className="PhotoLoader-large" fluid />
</div>
);
};
const Modal = ({ handleClose, show, children }) => {
const showHideClassName = show ? "modal display-block" : "modal display-none";
return (
<div className={showHideClassName}>
<section className="modal-main">
{children}
{loadPhoto(1)} //on this function I need to get correct ID from clicked photo on PhotoLoader.js React Component and not just number 1
<div className="clear"></div>
<Button onClick={handleClose}>
Close
</Button>
</section>
</div>
);
};
export default Modal;
好的,我的问题是什么?
在 Modal.js 上有一行 {loadPhoto(1)} ,其中数字 1 只是所需照片的 ID,必须以某种方式从 PhotoLoader.js 文件中动态获取。这个怎么做?
解决方案
这可以通过将 id 传递给 show model 方法来处理,如下所示
showModal = (id) => {
this.setState({ show: true, id: id });
};
在模型页面中,您可以使用此值。
推荐阅读
- excel - 多标准索引/匹配与 VBA 中的偏移量类型不匹配
- php - 无法断言两个对象相等 PHP Codeception
- scala - 解析订单文件,按股票代码分组并计算平均订单价格和数量
- swift - 斯威夫特 | 如何在 Firebase 中检测发送方和接收方
- spring-boot - Azure 应用服务:使应用程序在文件系统上读/写
- javascript - onClick 函数在悬停而不是单击时触发
- javascript - 使用 JavaScript 测试自动化工具的基于 Azure AD 的 SSO 身份验证
- unit-testing - Grails:控制器单元测试,动作的职责应该是什么?
- jquery - iOS Safari 中的 $.getScript 错误 - 适用于 Chrome
- python - 基本无法得到我想要的时期