Вот файлы:
script.jsx: (основной скрипт)
document.addEventListener('DOMContentLoaded', () => {
ReactDom.render(
<Body>
<Collage />
</Body>,
document.querySelector('#body'),
);
});
body.jsx:
const Body = function (props) {
return (
<>
{props.children}
</>
);
};
export default Body;
collage.jsx:
export default class Collage extends React.Component {
constructor() {
super();
this.state = {
images: [
{ src: '/home/photos/vertical/1' },
{ src: '/home/photos/vertical/0' },
],
};
}
render() {
return (
<div className="collage">
{this.state.images.map(image => <Image src={image.src} key={Math.random()} />)}
</div>
);
}
image.jsx:
const Image = ({ src, alt }) => (
<img className="collage__img"
alt={alt}
src={`${src}.jpg`}
onTransitionEnd={evt => evt.target.remove()} />
);
Image.propTypes = {
src: PropTypes.string.isRequired,
alt: PropTypes.string,
};
Image.defaultProps = {
alt: '',
};
export default Image;
Итак, скрипт .jsx должен отображать компоненты Body
и Collage
. Все, что делает Body
, просто возвращает своих потомков. Collage
состоит из одного div
со списком Image
. И данные изображений хранятся в состоянии Collage
. Image
- это просто img
.
Когда страница загружается, все работает нормально. Но когда я изменяю размер окна, изображения по какой-то причине исчезают.
Если вы хотите увидеть, как исчезают изображения, есть видео .
Такое поведение кажется нарушенным. Думаю, это может быть ошибка. Но я хочу, чтобы так сказал кто-то, кто разбирается в React. Если нет, опишите, пожалуйста.
Приведенный выше код может выглядеть странно, но это всего лишь минимально воспроизводимый пример. Я также могу поделиться полным кодом. Вот репозиторий