Если все, что вы используете для 'material-ui', это импорт компонента, то могу ли я предложить использовать ваш собственный CSS, который может быть достаточно простым? Если у вас уже есть контроль над шириной элементов проигрывателя и их контейнера, вы можете просто добавить 'display: inline-block' в контейнер div:
<div style={{ display: 'inline-block' }}>
Это может привести кпроблемы с отзывчивостью, в этом случае вы можете проверить некоторые гибкие стили, которые дают вам больше контроля. Это немного больше CSS, но предоставит более масштабируемые, отзывчивые решения.
По сути, вы хотите сохранить контейнер, в который все из вашей карты () будет возвращать свои элементы. Этот контейнер будет иметь стили, которые выглядят примерно так:
render() {
return (
<div style={{ display:'flex', justifyContent: 'space-between'}}>
{renderPlayers()}
</div>
)
};
renderPlayers() {
const { multipleVideoSource } = this.state;
return (
multipleVideoSource !== null ?
multipleVideoSource.map(src => (
<div> {/* maybe keep for flex-item style? Otherwise, not necessary */}
<Player key={src} height={500} fluid={false}>
<ControlBar autoHide={false} className="my-class" />
<BigPlayButton position="center" />
<HLSSource isVideoChild src={src} />
</Player>
</div>
))
: "Only one video"
);
};
По умолчанию Flex имеет значение «flexDirection» для «row», а также «flexWrap» для «nowrap», поэтому вам не придется устанавливать их для вашего горизонтальногоСетка. (Если вы не хотите, чтобы он был перенесен на устройства меньшего размера.)
Вы также можете устанавливать стили для каждого отдельного дочернего элемента и использовать различные стили Flexbox на таких сайтах, как этот https://the -echoplex.net / flexyboxes/
Надеюсь, это поможет!