Время SSR узлов J и React JS на сервере и клиенте не совпадает - PullRequest
0 голосов
/ 05 октября 2018

Я имею дело с Node js и React js Server Rendering.Я столкнулся с проблемой.Я экономлю время в формате ISO на MongoDB, поэтому мне нужно преобразовать его в обычный формат, и результат преобразования различен для сервера и клиента из-за разницы часового пояса сервера и часового пояса клиента (мне нужно MM / dd / YYYY HH: формат мм).Конечно, реакция выдает предупреждение об этом.Я использовал moment.js и toLocalString ().У вас, ребята, есть какие-нибудь возможные решения для решения этой проблемы?

Большое вам спасибо, ребята.

1 Ответ

0 голосов
/ 20 августа 2019

Как вы сказали, проблема связана с разницей между часовым поясом сервера и часовым поясом клиента.Один из способов исправить это - отобразить метку времени ISO на сервере, а затем заменить ее на локальное время на стороне клиента в componentDidMount().

.это единственный метод жизненного цикла, который вызывается при рендеринге сервера, поэтому безопасно писать логику, связанную с часовым поясом, в componentDidMount().

document.querySelectorAll('...').forEach(el => {
  const timestamp = Number(el.textContent)
  const timezoneOffset = new Date().getTimezoneOffset() * 60 * 1000 // milliseconds
  const localDate = new Date(timestamp - timezoneOffset)
  el.textContent = formattedDate(localDate, 'my-custom-format') // use custom formatting here
})
...