在 React 中切换暗模式和亮模式

Switching between Dark and Light Mode in React

我在 React 中使用 useDarkMode 库。

import useDarkMode from 'use-dark-mode'

const DarkModeToggle = () => {
    const darkMode = useDarkMode(false)
    return (
        <>
            {darkMode ? (
                <button type="button" onClick={darkMode.disable}>
                    ☀
                </button>
            ) : (
                <button type="button" onClick={darkMode.enable}>
                    ☾
                </button>
            )}

        </>
    )
}

我想要按钮可以在太阳和月亮之间切换,并且能够在暗模式和亮模式之间切换。我似乎无法弄清楚如何做到这一点,我也尝试过使用钩子,但没有成功。

根据文档 useDarkMode() returns 具有 value:

属性的对象

value: A boolean containing the current state of dark mode.

所以您很可能可以尝试以下操作:

{darkMode.value ? (
   <button type="button" onClick={darkMode.disable}>
       ☀
   </button>
) : (
   <button type="button" onClick={darkMode.enable}>
       ☾
   </button>
)}

希望对您有所帮助!

如果@norbitrial 的答案被证明是正确的,您可能还有一种缩短代码以提高其可读性的方法:

<button type='button' onClick={darkMode.value ? darkMode.disable : darkMode.enable}>
     {darkMode.value ? '☀' : '☾' }
</button>

更进一步:

const DarkModeToggle = () => {
    const { value, disable, enable } = useDarkMode(false)
    return (
        <button type='button' onClick={value ? disable : enable}>
            {value ? '☀' : '☾'}
        </button>
    )
}

图书馆似乎还提供了 toggle function,不再需要 enabledisable,现在您对两者使用相同的按钮:

const DarkModeToggle = () => {
    const { value, toggle } = useDarkMode(false)
    return (
        <button type='button' onClick={toggle}>
            {value ? '☀' : '☾'}
        </button>
    )
}