Parçacıklara Dön
ReactTypeScript

React Karanlık Mod Toggle

Sistem tercih algılamalı karanlık mod geçiş hook'u ve bileşeni.

reactdark modethemetoggle
import { useState, useEffect } from class=class="text-emerald-400">"text-emerald-400">'react'

function useDarkMode(): [boolean, () => void] {
  const [isDark, setIsDark] = useState(() => {
    if (typeof window === class=class="text-emerald-400">"text-emerald-400">'undefined') return false
    const saved = localStorage.getItem(class=class="text-emerald-400">"text-emerald-400">'theme')
    if (saved) return saved === class=class="text-emerald-400">"text-emerald-400">'dark'
    return window.matchMedia(class=class="text-emerald-400">"text-emerald-400">'(prefers-color-scheme: dark)').matches
  })

  useEffect(() => {
    const root = document.documentElement
    if (isDark) {
      root.classList.add(class=class="text-emerald-400">"text-emerald-400">'dark')
      localStorage.setItem(class=class="text-emerald-400">"text-emerald-400">'theme', class=class="text-emerald-400">"text-emerald-400">'dark')
    } else {
      root.classList.remove(class=class="text-emerald-400">"text-emerald-400">'dark')
      localStorage.setItem(class=class="text-emerald-400">"text-emerald-400">'theme', class=class="text-emerald-400">"text-emerald-400">'light')
    }
  }, [isDark])

  const toggle = () => setIsDark(prev => !prev)

  return [isDark, toggle]
}

export default useDarkMode

Nasıl Kullanılır

Layout'unuzda kullanın: const [isDark, toggleDark] = useDarkMode(). Bir butona tıklandığında toggleDark() çağırın. İlk ziyarette sistem tercihlerini dikkate alır ve seçimi localStorage'da saklar.

İlgili Teknoloji

React

Aklınızda Bir Proje mi Var?

Fikrinizi birlikte hayata geçirelim. 50+ teslim edilmiş projeyle sizi konseptten yayına hazır bir ürüne taşıyor; sabit fiyatlı tekliflerle özel yazılım geliştirme sunuyoruz. Hiçbir taahhüt olmadan ücretsiz danışmanlık alın.

veya ücretsiz görüşme ayarlayın