在react中引用viewer.js 遇到图片路径动态改变后不展示的问题

发布于 2022-09-07 08:46:17 字数 3562 浏览 13 评论 0

您好。如题。我在代码中是这样写的。
step:1 为了将默认的小图片列表从上方移到左边,我设置了template

Viewer.TEMPLATE = (
    '<div class="viewer-container">' +
      '<div class="viewer-canvas"></div>' +
      '<div class="viewer-navbar">' +
          '<ul class="viewer-list" ></ul>' +
      '</div>' +
      '<div class="viewer-footer">' +
        '<div class="viewer-title"></div>' +
        '<ul class="viewer-toolbar">' +
          '<li class="viewer-zoom-in" data-action="zoom-in"></li>' +
          '<li class="viewer-zoom-out" data-action="zoom-out"></li>' +
          '<li class="viewer-one-to-one" data-action="one-to-one"></li>' +
          '<li class="viewer-reset" data-action="reset"></li>' +
          '<li class="viewer-prev" data-action="prev"></li>' +
          '<li class="viewer-play" data-action="play"></li>' +
          '<li class="viewer-next" data-action="next"></li>' +
          '<li class="viewer-rotate-left" data-action="rotate-left"></li>' +
          '<li class="viewer-rotate-right" data-action="rotate-right"></li>' +
          '<li class="viewer-flip-horizontal" data-action="flip-horizontal"></li>' +
          '<li class="viewer-flip-vertical" data-action="flip-vertical"></li>' +
        '</ul>' +
      '</div>' +
      '<div class="viewer-tooltip"></div>' +
      '<div class="viewer-button" data-action="mix"></div>' +
      '<div class="viewer-player"></div>' +
    '</div>'
  );

step:2 初始化

$('.images').viewer({
       inline: true
})
<ul className="images" id= "images">
    {
        that.state.imagesData.map(function (v, i) {
             var id = v.id
             var content = 'http://192.168.2.202:8090/httpfiletrans/HttpFileTrans?'+
                           'method=download&FilePath=';
             if (that.state.changeInmageOrigin == true && that.state.chooseImageId == v.id) {
                    content += [v.targetImagePath](url)
              } else {
                    content += v.aiResultImagePath
             }
            if (v.aiResult == 1) { 
                   return (<li ><img src={content} name={id}/></li>)
             } else {
                  return (<li className='tipsbox' ><img src={content} name={id}/></li> )
            }
       })
      }
 </ul>
 <div className='seeOrigin' ><Checkbox onChange={this.onChange}>查看原图</Checkbox></div>

step3: 点击查看原图切换url

 onChange = (e) => {
        var changeImageOrigin = e.target.checked;
        var chooseImageNum = $('.viewer-active>img')[0].name;
        this.setState({
            hasMore: false,
            changeInmageOrigin: changeImageOrigin,
            chooseImageId: chooseImageNum
        }, () => {
            $('.images').viewer('destroy')
            $('.images').viewer({
                inline:true
            })
        })
    }

我使用了 $('.images').viewer('destroy')然后再重新加载,这样在第一张图片点击查看原图时是没有问题,当点击其他图片的时候都会默认选择到第一张图片。我曾经试过用update但是没有效果,请问这种情况应该怎么解决,万分感谢!

当我把
$('.images').viewer('destroy')
$('.images').viewer({
      inline:true
 })
改为
$('.images').viewer({
      inline:true
 }).viewer('update')
时,我在页面查看了下。
显示的图片还是原来的没有改变。因为增加在左边显示的图片列表里的url还是原来的没有改变,
而viewer.js默认展示在上方的图片列表里的url是改变了的。

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

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

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文