@tomatenshi
Frontend разработчик

Как можно упростить выражение?

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].
  • Вопрос задан
  • 82 просмотра
Решения вопроса 1
Jeer
@Jeer
уверенный пользователь
Могу предложить:
if(placement=='top' && coords.top < 0
   || placement=='right' && coords.right > width
   || placement=='bottom' && coords.bottom > height
   || placement=='left' && coords.left < 0)
          placement = this.placementArr[1];
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
alexndb
@alexndb
web developer
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы