【发布时间】:2020-07-20 03:06:00
【问题描述】:
图片库是一组带有相应删除按钮的图片。这是包含两个图像的画廊的 HTML 代码:
<div>
<div class="image">
<img src="URL1">
<button class="remove">X</button>
</div>
<div class="image">
<img src="URL2">
<button class="remove">X</button>
</div>
</div>
实现 ImageGallery 组件,该组件接受 links 道具并呈现上述画廊,以便 links 道具中的第一项是画廊中第一张图像的 src 属性。它还应实现以下逻辑:单击按钮时,应从图库中删除与按钮在同一 div 中的图像。
例如,从上面的图库中删除第一张图片后,其 HTML 代码应如下所示:
<div>
<div class="image">
<img src="URL2">
<button class="remove">X</button>
</div>
</div>
这是我实现的解决方案,但没有通过测试用例
class ImageGallery extends React.Component {
constructor() {
super();
}
remove = e => {
Array.prototype.forEach.call(
document.getElementsByClassName("remove"),
function(elem) {
elem.onclick = () => elem.parentNode.remove();
}
);
};
render() {
return (
<div>
{this.props.links.map((item, index) => {
return (
<div key={item} className="image">
<img key={index} src={item} />{" "}
<button className="remove" onClick={this.remove}>
X
</button>
</div>
);
})}
</div>
);
}
}
document.body.innerHTML = "<div id='root'> </div>";
const rootElement = document.getElementById("root");
const links = ["URL1", "URL2"];
ReactDOM.render(<ImageGallery links={links} />, rootElement);
document.querySelectorAll(".remove")[0].click();
console.log(rootElement.innerHTML);
这是一个沙盒演示 - https://codesandbox.io/s/testdome-react-1-focus-7qbp1?file=/src/index.js
有关测试用例的详细信息,请参阅第 5 题 - https://www.testdome.com/d/react-js-interview-questions/304
【问题讨论】:
标签: javascript html css reactjs react-redux