Постоянная переменная после перезагрузки приложения - React Native - PullRequest
0 голосов
/ 30 мая 2018

Итак, у меня есть 5 переменных

const currentTime = moment().unix()
const eventTime = moment().add(12, 'h').unix()
const diffTime =  eventTime - currentTime
const duration = moment.duration(diffTime * 1000, 'milliseconds')
const interval = 1000

и функция, которую я вызываю внутри componentDidMount

componentDidMount() {
    setInterval(() => {
      duration = moment.duration(duration.asMilliseconds() - interval, 'milliseconds')
        let h = moment.duration(duration).hours()
        let m = moment.duration(duration).minutes()
        let s = moment.duration(duration).seconds()
        console.log(h, m, s)
    }, interval)
  }

Мне нужно, чтобы после перезагрузки мобильного приложения diffTime переменная не будет установлена ​​по умолчанию в 12 часов, но она будет прервать событие после закрытия приложения.Поэтому, когда я загружаю Экран, будьте там в течение 30 минут, а затем закроем приложение на 2 часа и вернемся. diffTime будет 9 ч 30 мин

Спасибо за любые предложения

Ответы [ 2 ]

0 голосов
/ 30 мая 2018

Я вижу по крайней мере 3 подхода:

  • Как предложил Карим, вы можете использовать фоновое задание ...
  • Вы можете сохранить это значение на сервере, когда вы закрываетеваше приложение и получить его при повторной загрузке
  • Вы можете сохранить это значение и местное время на телефоне, когда приложение закроется.Прочитайте его, когда откроете приложение (обновите), сравните с фактическим временем и уменьшите значение при инициализации.Чтобы сохранить локально, вы можете взглянуть на: https://facebook.github.io/react-native/docs/asyncstorage.html
0 голосов
/ 30 мая 2018

Используйте кэш для хранения difftime и продолжайте обновлять, как -

storage.save({
        key: 'difftimeKey',   // Note: Do not use underscore("_") in key!
        rawData: {
             difftime
        },
        expires: 1000 * 3600 * 24 * 30  // ms - 30 days
    });
...