使用了官方推薦的相冊(cè)模式的預(yù)覽,但是點(diǎn)擊預(yù)覽之后,每次都是從圖片列表的第一張開(kāi)始預(yù)覽,而不是點(diǎn)擊哪張就從哪張開(kāi)始預(yù)覽:
所以這里我就封裝了一下,對(duì)初始化預(yù)覽的列表進(jìn)行了邏輯處理:
當(dāng)點(diǎn)擊開(kāi)始預(yù)覽的時(shí)候,要找到當(dāng)前圖片在預(yù)覽圖列表中的索引,然后設(shè)置為當(dāng)前預(yù)覽圖索引,然后等點(diǎn)擊左右切換的時(shí)候,要改變這個(gè)索引,所以要使用onChange函數(shù),等點(diǎn)擊關(guān)閉按鈕的時(shí)候,還要重置這個(gè)索引為點(diǎn)擊時(shí)候的圖片索引:文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-641433.html
import './index.scss'
import { Image } from 'antd'
import { useState } from 'react'
export default function ImageItem(props: any) {
// console.log('props', props)
const preList = [
'https://gw.alipayobjects.com/zos/antfincdn/LlvErxo8H9/photo-1503185912284-5271ff81b9a8.webp',
'https://gw.alipayobjects.com/zos/antfincdn/cV16ZqzMjW/photo-1473091540282-9b846e7965e3.webp',
'https://gw.alipayobjects.com/zos/antfincdn/x43I27A55%26/photo-1438109491414-7198515b166b.webp',
]
const [preIndex, setIndex] = useState(preList.indexOf(props.imgUrl))
// 當(dāng)點(diǎn)擊前后切換的時(shí)候,修改當(dāng)前預(yù)覽圖
const handleSwitch = (current: number, prevCurrent: number) => {
console.log('切換預(yù)覽圖', current, prevCurrent)
setIndex(current)
}
// 關(guān)閉預(yù)覽圖是重置預(yù)覽為當(dāng)前圖索引
const handleClose = (visible: boolean) => {
console.log('關(guān)閉預(yù)覽圖', visible)
if (!visible) {
setIndex(preList.indexOf(props.imgUrl))
}
}
return (
<div className="file">
<Image.PreviewGroup
items={preList}
preview={{
minScale: 0.1,
current: preIndex,
onChange: handleSwitch,
onVisibleChange: handleClose,
}}
>
<Image className="item-img" src={props.imgUrl} />
</Image.PreviewGroup>
</div>
)
}
預(yù)覽結(jié)果:?文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-641433.html
到了這里,關(guān)于React使用antd的圖片預(yù)覽組件,點(diǎn)擊哪個(gè)圖片就預(yù)覽哪個(gè)的設(shè)置的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!