Синхронизировать несколько Coundowns o различные устройства реагируют нативно - PullRequest
0 голосов
/ 28 апреля 2018

Привет! Я использую React Native для создания приложения аукционов. У меня есть плоский список для рендеринга каждого продукта на аукционе. В компоненте «Плоский список» у меня есть интервал 1000 миллисекунд для обновления состояния всех элементов, оставшихся до времени.

А для обновления текущего времени я использую следующий метод:

updateTime(){
let currentTime = moment().unix();
let diffTime = this.state.product.endTime - currentTime;
let duration = moment.duration(diffTime * 1000, 'milliseconds');
          
return duration.hours() + ":" + duration.minutes() + ":" + duration.seconds();
}

Я извлекаю время окончания каждого продукта из Firebase Firestore.

Но по какой-то причине, которую я не понимаю, время, оставшееся в разных устройствах, варьируется между 2, 3 или даже 4 секундами.

Если вы можете сказать мне, что я делаю неправильно или как это лучше всего сделать, я был бы признателен.

1 Ответ

0 голосов
/ 28 апреля 2018

moment() получает время, установленное на устройстве, поэтому ожидается, что на разных устройствах не установлено одинаковое время.

Вместо обратного отсчета после извлечения времени окончания продукта вы можете использовать интервал времени:

setInterval(() => this.setState(prevState => ({ timeElapsed: prevState.timeElapsed + 1 }), 1000);
...
const timeRemaining = this.state.product.endTime - this.state.timeElapsed
...