react map遍历数组,展示在页面上,如何通过变量去修改其中一个的图片。

发布于 2022-09-11 17:32:00 字数 344 浏览 12 评论 0

问题描述

我有一个数组,通过map遍历在页面展示,我点击其中一张图片的时候,对应的灰色图片变为蓝色图片

问题出现的环境背景及自己尝试过哪些方法

代码:

clipboard.png

效果图:

clipboard.png

点击效果图的红色区域,对应的图片有灰色图片变为蓝色图片

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

绅士风度i 2022-09-18 17:32:01
const advList = this.state.advList.map((item,key)=> {
    if (key === index) {
        return Object.assign({}, item, {visibelChange: true})
    }
    return item
})
this.setState({advList})
梦情居士 2022-09-18 17:32:01

图片属于静态资源,不能直接替换地址,需要提前require引入

西瑶 2022-09-18 17:32:00

看下你画红框的<Img />代码那一行,你监听的是item.visibleColor来变化Imgurl,等同于你监听的是this.state.advList这个数组的每一项,但是你的changeColor方法却改变的是this.state.visibleChange。监听的数据与改变的数据不是同一个,所以你点击了也没有任何效果。 将changeColor方法修改一下

changeColor =() => {
     const _newList = this.state.advList.map((item,key) => {
        let visibleColor= true;
        
        if (key !== index) { // 把非点击图片颜色变为灰色(排他思想)
             visibleColor= false
        }
        return Object.assign({}, item, {visibleColor: visibleColor})
     });
     this.setState({
         advList: _newList
     });
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文