React: Bagaimana Cara Mengatasi Error "Warning: Text content did not match."?

Dibuat
·
Diperbarui
·
Dilihat352 kali
1

Saya mengalami masalah dengan rendering tanggal saat menggunakan Next.js/React, pesan kesalahannya:

Warning: Text content did not match. Server: "22 Jan 2024, 04.19.12 UTC" Client: "22 Jan 2024, 11.19.12 WIB" time"

Pesan kesalahan diatas muncul ketika saya menyetel timezone Node.js ke UTC untuk mereproduksi kesalahan.

Di komputer lokal normal, tapi ketika saya deploy ke production masalah ini muncul meskipun kalau di production pesan kesalahannya seperti ini:

Uncaught Error: Minified React error #425; visit https://reactjs.org/docs/error-decoder.html?invariant=425 for the full message or use the non-minified dev environment for full errors and additional helpful warnings.

Bagaimana ya biasanya teman-teman mengatasi masalah ini?

2 Jawaban
1

Pesan kesalahan seperti itu ngasih tau kita bahwa ada content HTML yang dirender di client tidak cocok dengan teks yang disajikan server.

Untuk melihat HTML asli yang dikirim oleh server (sebelum dievaluasi dan dihidrasi di browser) buka alamat berikut dibrowser: view-source:https:www.example.com/page ganti https:www.example.com/page dengan halaman yang bermasalah.

Cari teks yang dimaksud dalam pesan kesalahan di bagian server pakai CTRL + F. Setelah dapet teks server, bandingkan dengan yang terlihat dilayar (buka halaman tanpa view-source:).

Ini biasanya terjadi pada tanggal, dilokal tidak menimbulkan masalah karena timezone nodejs biasanya sama dengan timezone komputer yang digunakan browser kita.

Tapi di server timezone nya biasanya menggunakan UTC, oleh karena itu karena proses hidrasi terjadi di browser maka tanggal juga akan dievaluasi di browser (client) yang mana timezonenya bisa berbeda.

Untuk mengatasinya tambahkan atribut suppressHydrationWarning ke tag HTML yang berisi konten bermasalah, misalnya:

function Time() {
  return <time suppressHydrationWarning>{new Date().toLocaleString()}</time>;
}

Ini sesuai dengan rekomendasi React maupun Next.js.

Dibuat

solusi ini membuat tanggal jadi sama di server dan client atau gimana?

0
kicut·22 Jan 2024

Tetap beda, hanya menyembunyikan pesan kesalahan.

0
Renova MR·22 Jan 2024
-3
package main

import "fmt"

func main() {
  fmt.Println("hello")
}
Dibuat

Kamu tau jawabannya?

Ayo bergabung bersama lebih dari 200.000 pengguna lainnya!