Javascript ReactJS。图像在调整窗口大小时消失
以下是文件: script.jsx:(主脚本)Javascript ReactJS。图像在调整窗口大小时消失,javascript,reactjs,resize,Javascript,Reactjs,Resize,以下是文件: script.jsx:(主脚本) document.addEventListener('DOMContentLoaded',()=>{ ReactDom.render( , document.querySelector(“#body”), ); }); body.jsx: const Body=函数(道具){ 返回( {props.children} ); }; 导出默认体; collage.jsx: 导出默认类拼贴扩展React.Component{ 构造函数(){ 超级()
document.addEventListener('DOMContentLoaded',()=>{
ReactDom.render(
,
document.querySelector(“#body”),
);
});
body.jsx:
const Body=函数(道具){
返回(
{props.children}
);
};
导出默认体;
collage.jsx:
导出默认类拼贴扩展React.Component{
构造函数(){
超级();
此.state={
图像:[
{src:'/home/photos/vertical/1'},
{src:'/home/photos/vertical/0'},
],
};
}
render(){
返回(
{this.state.images.map(image=>)}
);
}
image.jsx:
const Image=({src,alt})=>(
evt.target.remove()}/>
);
Image.propTypes={
src:PropTypes.string.isRequired,
alt:PropTypes.string,
};
Image.defaultProps={
alt:“”,
};
导出默认图像;
因此,script.jsx应该呈现Body
和Collage
组件。Body
所做的只是返回它的子对象。拼贴
由一个div
和一组图像组成。图像数据存储在拼贴
状态。图像
只是一个img
加载页面后,一切正常。但是,当我调整窗口大小时,由于某种原因,图像正在消失
如果你想看看这些图像是如何消失的,有一个
这种行为似乎被打破了。我认为这可能是一个错误。但我想让一个理解的人这么说。如果不是,请描述一下
上面的代码可能看起来很奇怪,但这只是一个最小的可复制示例。我也可以分享完整的代码。下面是图像确实消失了,因为它们在onTransitionEnd={evt=>evt.target.remove()}
中被删除了,如图所示。
据我所知,这是有意的,应该发生在手机屏幕尺寸上的不透明转换
现在,为什么会发生这种情况呢。因为在html
元素上有另一个转换,即font-size
。而font size
是一个继承属性,因此它会对图像和html
下的每个元素进行更改
如何避免这种情况,但要让removalon过渡保持在原位。
三种方式:
检查属性名称onTransitionEnd={evt=>evt.propertyName==='opacity'&&evt.target.remove()}
使用显式设置要转换的属性。拼贴\uu img{transition property:opacity;}
使用使字体大小
不继承
。拼贴{font-size:initial;}
我会选择第二种。当然不是选项3,因为这只考虑了font size
转换,并且让onTransitionEnd
在将来可能添加的任何其他转换上触发。我认为它应该与onTransitionEnd={evt=>evt.target.remove()}
有关,一般来说,如果您已经在使用React,那么使用domapi删除元素不是一个好主意。正确的方法是更改状态.images
数组