如何解决React映射数据时渲染空div导致内容下移问题
解决模态框中空div导致内容下移的问题
问题根源:你用map遍历所有ICSData元素时,每个元素都会生成一个外层<div>——哪怕id不匹配,这个空div也会被保留下来。大量空div堆积,就把实际内容挤到了下方。
修复方案:不要遍历全部数据,先用find找到匹配id的单个数据项,再渲染它的内容:
const Modal = ({ handleClose, id, title, subtitle, description, techStack, image, github, devpost }) => { // 找到匹配id的数据项 const targetElement = ICSData.find(element => element.id === id); // 如果找不到匹配项,返回null或者自定义提示内容 if (!targetElement) return null; return ( <Backdrop onClick={handleClose}> <motion.div onClick={(e) => e.stopPropagation()} className='modal-ics' variants={dropIn} initial='hidden' animate='visible' exit='exit' > <div className='w-full flex flex-col items-center'> <ModalButton onClick={handleClose} label='Close'></ModalButton> <div className='flex flex-col w-full h-full justify-between items-start'> hello {/* 直接渲染匹配到的数据内容 */} <div> <div className='modal-text-separator'> <h1 className='modal-title'>{targetElement.title}</h1> <h3 className='modal-date'>{targetElement.subtitle1}</h3> <p className='modal-description mt-2'>{targetElement.description1}</p> </div> { targetElement.subtitle2 && <div className='modal-text-separator'> <h3 className='modal-date'>{targetElement.subtitle2}</h3> <p className='modal-description mt-2'>{targetElement.description2}</p> </div> } { targetElement.subtitle3 && <div className='modal-text-separator'> <h3 className='modal-date'>{targetElement.subtitle3}</h3> <p className='modal-description mt-2'>{targetElement.description3}</p> </div> } { targetElement.subtitle4 && <div className='modal-text-separator'> <h3 className='modal-date'>{targetElement.subtitle4}</h3> <p className='modal-description mt-2'>{targetElement.description4}</p> </div> } { targetElement.subtitle5 && <div className='modal-text-separator'> <h3 className='modal-date'>{targetElement.subtitle5}</h3> <p className='modal-description mt-2'>{targetElement.description5}</p> </div> } </div> </div> </div> </motion.div> </Backdrop> ) } export default Modal;
这样修改后,只会渲染匹配id的内容,不会生成任何空div,内容下移的问题就解决了。
内容的提问来源于stack exchange,提问作者Stephen Ni
相关产品推荐
相关产品推荐

