Обновление стиля тела в реакции магазина mobx - PullRequest
0 голосов
/ 05 мая 2019

У меня есть модальный компонент (React), который наблюдает за изменениями с помощью метода open, close в хранилище mobx.

При открытии мне нужно установить document.body.style.overflow = 'hidden' для сохранения модальной прокрутки.В заключение я очищаю скрытый стиль от тела.

@action open = () => {
    document.body.style.overflow = 'hidden'
}

@action close = () => {
    document.body.style.overflow = ''
}

Есть ли лучший способ сделать это с autorun?

Я не могу понять, где вызвать автозапусквне класса Store или имеет метод внутри.Мне не повезло.

autorun(
  () => {
      document.body.style.overflow = this.isMaximized ? 'hidden' : ''
  },
  { name: 'bodyOverflowUpdate' }
)

Для справки this.isMaximized - это вычисленное значение

@computed
  get isMaximized() {
    return this.modalState.isOpen && !this.modalState.isMinimized
}

1 Ответ

0 голосов
/ 05 мая 2019

Использование реакции MOBX кажется, так что решите мой вариант использования

setBodyOverflow = reaction(
    () => this.isMaximized,
    isMaximized => {
      document.body.style.overflow = isMaximized ? 'hidden' : ''
    },
    { name: 'setBodyOverflow' },
  )
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...