let placement = this.placementArr[0];
switch (placement) {
case "top":
if (coords.top < 0) placement = this.placementArr[1];
break;
case "right":
if (coords.right > width) placement = this.placementArr[1];
break;
case "bottom":
if (coords.bottom > height) placement = this.placementArr[1];
break;
case "left":
if (coords.left < 0) placement = this.placementArr[1];
break;
}
if (this.state.placement !== placement)
this.setState({placement});
и надо ли его упрощать? Если при просмотре не понятно что делается и зачем, значит надо)
вообще есть массив placementArr. Он содержит 2 элемента (например ["right", "bottom"])
при отрисовке элемента я вызываю этот метод чтобы определить какой должен быть placement.
По умолчанию всегда должен быть placementArr[0]. Но если элемент не влезает, то переключаем на placementArr[1]. Соответственно при ресайзе окна элемент может сначала влезать - оставляем placementArr[0]. Потом не влезать переключаем на placementArr[1]. И снова влезать - опять переключаем на placementArr[0].